1

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

但是,如果我在调用函数 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 语句中包含函数定义。谁能告诉我如何重新排列它以便正确接受默认参数?我可以将 Function(int a) 移动到 CallingFunction 上方以使其工作至今。

4

1 回答 1

5

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

void Function(int a = 123);

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

于 2011-11-09T21:14:00.253 回答