将函数中的参数启动为零。但是在构建代码时仍然会出错

时间:2012-11-26 00:23:44

标签: c++ function g++ overloading

  

可能重复:
  Constructors with default parameters in Header files
  Default value of function parameter

ERROR:

**** 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.

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您需要在函数声明中声明函数参数的默认值(通常在头文件中),而不是定义(通常是cpp文件)。所以在你的情况下,代码看起来应该是这样的:

<。>文件中的

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

在.cpp文件中

CComplex::CComplex(float r, float i)
{
    // ...
}