1

可能重复:
头文件中具有默认参数的构造
函数 函数参数的默认值

错误:

**** Internal Builder is used for build               ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o src\Calculator.o ..\src\Calculator.cpp
..\src\Calculator.cpp:26:55: error: default argument given for parameter 1 of 'CComplex::CComplex(float, float)'
..\src\/Calculator.h:25:9: error: after previous specification in 'CComplex::CComplex(float, float)'
..\src\Calculator.cpp:26:55: error: default argument given for parameter 2 of 'CComplex::CComplex(float, float)'
..\src\/Calculator.h:25:9: error: after previous specification in 'CComplex::CComplex(float, float)'
Build error occurred, build is stopped
Time consumed: 563  ms.

有没有人遇到过类似的问题。有什么可能的解决方法?

4

2 回答 2

1

您在函数定义中使用默认参数做错了。

class {
void CComplex(float a=0.0, floatb=0.0);
};

如果你有这样的函数定义,那就错了:

void CComplex::CComplex(float a=0.0, floatb=0.0) 
{
}

它应该是:

void CComplex(float a, float) 
{
}

然后

call CComplex(); `a,b` will be default to `0.0`
call CComplex(1.0); will set a to a 1.0 and b to 0.0
call CComplex(1.0, 2.0); will set a to 1. and b to 2.0
于 2012-11-26T00:44:50.457 回答
1

您需要在函数声明中(通常在头文件中)声明函数参数的默认值,而不是定义(通常是 cpp 文件)。因此,在您的情况下,代码应如下所示:

在 .h 文件中

CComplex(float r=0.0, float i=0.0);

在 .cpp 文件中

CComplex::CComplex(float r, float i)
{
    // ...
}
于 2012-11-26T00:48:03.007 回答