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

関数宣言(通常はヘッダーファイル)で関数引数のデフォルト値を宣言する必要がありますが、定義(通常はcppファイル)では宣言しません。したがって、あなたの場合、コードは次のようになります。

.hファイル内

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

.cppファイル内

CComplex::CComplex(float r, float i)
{
    // ...
}
于 2012-11-26T00:48:03.007 に答える
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 に答える