这是我的班级定义:
class MyClass {
public:
void test(int val = 0);
}
void MyClass::test(int val = 0) {
//
}
当我尝试编译此代码时,我收到错误:“为参数1指定的默认参数”
这只是一个简单的功能,我不知道什么是错的。我正在使用Eclipse + MinGW。
答案 0 :(得分:8)
正式地,您可以在任何地方指定默认参数,但每个参数只能一次。即使值相同,也必须在函数声明或定义中进行特定,但不能同时在两者中进行。
当然,如果声明在头文件中(并且定义在实现文件中),常识说必须在头文件中指定默认参数,以便所有翻译单元都能“看到”它
答案 1 :(得分:2)
您的变量没有类型规范。这是打算吗?
然后你实际上需要在声明中指定默认值,而不是在你实现它的地方,它将是多余的。
答案 2 :(得分:0)
您不需要(也不应该)重复函数定义中的默认值。它只在声明中要求。