Ошибка внешней функции C++: слишком много аргументов для работы

У меня есть cw.h файл с кучей внешних функций, которые я хочу вызвать из моего cw.cpp файл.

Они выражены так в .h, файл вместе с декларациями Type struct (только пример функций, а не фактические имена функций):

extern Type* new_type(), match(), sharetype();

Но их определения и реализации находятся в cw.cpp файл.
Каждая из функций имеет 1 или более параметров, переданных в нее.

Когда я пытаюсь скомпилировать, я получаю сообщение об ошибке для каждой из функций:

cw.h:11: error: too many arguments to function Type new_type()
cw.cpp:575: error: at this point in file

Я понятия не имею, как это исправить. И я искал последний час (-_-)

EDIT [решено]:

Я изменил свой код в .h файл, чтобы соответствовать типам параметров, передаваемых в функции при вызове. Больше ошибок нет.

2 ответа

Решение

В C++ функция объявлена ​​с () является прототипом и означает, что функция не принимает аргументов. В C++ это эквивалентно использованию (void), Он не имеет того же значения, что и в C (то есть, что функция принимает неопределенное количество аргументов).

Расширяя ответ Чарльза Бейли:

В C++ Type* new_type() это другая функция, чем Type* new_type(int) из-за перегрузки.

Ваши параметры должны соответствовать их определению:

//hpp:
extern Type* new_type(int), match(float), sharetype(char);

//cpp:
Type* new_type(int x) {
  // ...
}

Type* match(float x) {
  // ...
}
Другие вопросы по тегам