C++ extern函数错误:函数参数太多
我有一个cw.h
文件,其中有一堆extern函数,我想从我的cw.cpp
文件中调用。C++ extern函数错误:函数参数太多
他们在.h
这样表达。伴随着的Type
结构(例如刚功能,而不是功能的实际名称)的声明文件:
extern Type* new_type(), match(), sharetype();
但他们的定义和实现是在cw.cpp
文件。
每个函数都有一个或多个传递给它的参数。
当我尝试编译,我不断收到此错误信息为每个功能:
cw.h:11: error: too many arguments to function Type new_type()
cw.cpp:575: error: at this point in file
我不知道如何解决它。我一直在寻找了几个小时了(-_-)
EDIT [解决]:
我在.h
文件相匹配的类型参数的改变了我的代码被传递到功能时,他们被称为。 没有更多的错误。
在C++中,用()
声明的函数是一个原型,意味着该函数不带任何参数。在C++中,它相当于使用(void)
。它的含义与C中的含义不同(即该函数接受不定数量的参数)。
所以我需要做的只是在圆括号内添加'void'? –
@Lady_ari:不,您需要为函数提供_correct_原型。由于我不知道它们是如何定义的,所以我不能告诉你这是什么。 –
这样就增加了传递给函数的参数的类型? –
扩展CharlesBailey的回答是:
在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) {
// ...
}
请出示cw.cpp更完整的答案。您的问题的要点是您的声明和定义不匹配。正如所宣称的那样,它们是无效的函数,它不会接受任何参数,所以即使1是太多的参数。听你的编译器;-) – AJG85