0

このコードをコンパイルしようとすると

Analysis2::Analysis2() //line 13
{
    Seconds_v = 0;    //Seconds_v and Seconds_t are both of type int 
    Seconds_t = 0;    //and declared in header
}

このエラーが発生します

analysis2.cpp:13: `FileParameters :: FileParameters()'への未定義の参照

なぜそれは私にその未定義の参照を与えるのですか?FileParametersはAnalysis2に含まれるクラスであり、それが役立つ場合は、Analysis2ヘッダーファイルで定義されたFileParametersオブジェクトがあります。

4

2 に答える 2

2

コンストラクターがある場合、初期化子リストで明示的に作成しないと、すべてのメンバー変数が自動的にデフォルトで作成されます。上記のコードは自動的に次のように展開されます。

Analysis2::Analysis2() : mFileParams(), Seconds_v(), Seconds_t() // line 13
{
    Seconds_v = 0;    //Seconds_v and Seconds_t are both of type int 
    Seconds_t = 0;    //and declared in header
}

また、のデフォルトコンストラクターをFileParametersまだ実装していない場合、またはアクセス可能なコンストラクターさえない場合は、エラーが発生します。

于 2011-05-26T19:29:00.897 に答える
0

Analysis2クラス(血まみれのひどい名前、ところで)はおそらくFileParametersを使用して実装されています。両方のクラスのオブジェクトをリンクする必要があります。ヘッダーを含めるだけでは不十分です。しかし、確かに、もっと多くのコードを見る必要があります。

于 2011-05-26T19:31:00.883 に答える