Ошибка внешней функции 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) {
// ...
}