2012-04-30 3 views
0

私はブール、配列へのポインタ、および文字列を取り込むクラスのコンストラクタを持っています。コンストラクタパラメータの問題C++

TheConstructor(bool theBool=true, int *theArray=0, std::string message="0"); 

これはヘッダーファイルに書き込む正しい方法ですか?私のプログラムは "コンストラクタ"と他のメンバ関数への "未定義の参照"のために現在コンパイルされていません。

これも原因になりますか?私はチェックし、main.cppで#include "Class.h"を定義し、 "Class.h"で記述した定義が必要なすべてのメンバー関数を定義しました。 "Class.cpp"に書きました

+0

あなたはブールの名前を持っていません。しかし、このエラーは、コンストラクタをどこにも定義していないことを示しています。つまり、あなたが与えた例は宣言だけであり、定義ではありません。 –

+0

クラスの宣言と定義を表示できますか? " – birryree

+0

実際のコードを表示できますか?実際のクラスの名前はTheConstructorですか? –

答えて

0

最初のパラメータの名前指定されていないが、それはおそらくあなたが遭遇しているエラーを起こさない:

TheConstructor(bool=0, int *theArray=0, std::string message="0"); 

あなたは、おそらくこのような何かやりたい:

TheConstructor(bool flag=0, int *theArray=0, std::string message="0"); 

をしかし、定義を見ることなく、そこにあります他にはそれほど私はそれについて言うことができません。宣言を見るだけで何が間違っているのかを予測するのは難しいです。

+0

申し訳ありませんが、実際には正しく定義されています – JDN

+0

その場合、何が間違っているのかを推測するのは難しいでしょう。定義ファイルの内容は何ですか? – Kiril

+0

プロトタイプではパラメータの名前は必要ありません – chris

2

私はあなたのクラスTheConstructorに名前を付けていなかった願っています:)あなたは、あなたがやったほぼそのままそのコンストラクタを宣言することができCクラスを持っている場合 - あなたはbool引数の名前を入れるのを忘れ:

Chの:

#include <string> 

class C 
{ 
public:  
    C(bool b = 0, int *theArray = 0, std::string message = "0"); 
}; 

C.cpp:

#include "C.h" 
C::C(bool b, int *theArray, std::string message) 
{ 

} 
+0

C.cppのセミコロンは余計です – Linoliumz

+0

@ Linoliumzありがとう。Typoは編集されました。 –