0

クラス内のフィールドが、.cpp ファイルのコンストラクターからアクセスできないという問題に遭遇しました。理由はわかりませんが、.cpp はそれを継承せず、残りの部分で使用するためにそれを構築できません。プログラム
Test.h で構築したいフィールドを含むクラスを次に示します。

class Test
{
public:
    Test();
    virtual ~Test();
    void count();
    int counter();
};

Test.cpp のフィールド 'counter' のコンストラクタは次のとおりです。

Test::Test() : counter(0){}

私のC++の知識では、Test.cppには#include "Test.h"が含まれているため、これは正しいはずであり、main.cppのみを使用してヘッダーを使用しない場合、クラスを作成および構築するときにまったく同じコードが機能します。アイデアはありますか?

4

2 に答える 2

5

Test::Test() : counter(0){}-メンバー関数を呼び出すのではなく、ここでメンバー変数を初期化する必要があります。

私はあなたが意味したと思います:

class Test
{
public:
    Test();
    virtual ~Test();
    void count();
    int counter; // no ()
};

ユリが提案したように

于 2012-07-31T13:43:46.050 に答える
5

int counter();関数宣言です。を削除し()ます。

于 2012-07-31T13:43:49.857 に答える