Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中定义默认函数参数+;生成器类和太少的参数错误_C++_C++builder_C++builder 2010 - Fatal编程技术网

C++ 在C+中定义默认函数参数+;生成器类和太少的参数错误

C++ 在C+中定义默认函数参数+;生成器类和太少的参数错误,c++,c++builder,c++builder-2010,C++,C++builder,C++builder 2010,我有一个用默认参数定义函数的类。只要函数定义位于调用它的函数之前的头文件中,它就可以正常工作 但是,如果调用函数之后移动它,C++ +Builder(2010)报告的参数错误太少。 标题可能是,例如: class TSomething { public: void CallingFunction(); void Function(int a); } cpp文件可能是: #include "Header.h" TSomething::CallingFunction() { Function()

我有一个用默认参数定义函数的类。只要函数定义位于调用它的函数之前的头文件中,它就可以正常工作

但是,如果调用函数之后移动它,C++ +Builder(2010)报告的参数错误太少。 标题可能是,例如:

class TSomething
{
public:
void CallingFunction();
void Function(int a);
}
cpp文件可能是:

#include "Header.h"

TSomething::CallingFunction()
{
Function(); // "Too few arguments" here...
}

TSomething::Function(int a = 123)
{
//... some code here ...
}

所以,如果调用函数在“函数”之前,它会报告太少的参数。我不明白为什么,因为它在cpp文件的#include语句中包含函数定义。有人能告诉我如何重新排列它,使它正确地接受默认参数吗?我可以将函数(int a)移到调用函数的上方,使其工作到目前为止。

您需要在类中的成员函数声明中放置默认参数:

void Function(int a = 123);

另外,从类外的定义中删除默认参数。

您需要将默认参数放入类内成员函数的声明中:

void Function(int a = 123);

另外,从类之外的定义中删除默认参数。

谢谢。。。现在工作。当我输入它的那一刻,我也明白了为什么它有效,而我的版本没有。。。哑…哑…哑!在声明和定义中,参数总是在调用函数之后。谢谢。。。现在工作。当我输入它的那一刻,我也明白了为什么它有效,而我的版本没有。。。哑…哑…哑!在声明和定义中,参数始终位于调用函数之后。