0

次のようにヘッダー ファイルにクラスを定義しました。

class myClass
{
public: 
       void test();
       void train();
private:
        bool check;
}

次に、cpp ファイルで、次のようにしました。

void myClass::test()
{
     int count = 9;
     //some other work
}  

void myClass::train()
{ 
    int newValue = count;
    ....
}

その後、当然のことながら、count が定義されていないというエラーが表示されました。だから私がやりたいのは、train関数で定義されているカウント値を使用することですtest. 追加の依存関係を使用せずにこれを行う良い方法はありますか? ありがとうございました。

4

2 に答える 2

2

あなたの例では、メソッド test が作業を終了すると、count変数はもう存在しないため、変数にアクセスする方法はありません。別の場所からアクセスできるように、その有効期間が十分に長くなることを確認する必要があります。クラスフィールドにすることで問題が解決します(これがクラスフィールドの目的です:))。

このようにしてください:

class myClass
{
public: 
   void test();
   void train();
private:
    bool check;
    int count; // <- here
}

その後

void myClass::test()
{
     count = 9;
     //some other work
}  

しかし、それだけが解決策ではありません。別の方法でそれを行うことができます。

class myClass
{
public: 
    int test()
    {
        // do some work
        return 9;
    }

    void train(int count)
    {
        int newValue = count;
    }
}

// (somewhere)

myClass c;
int count = c.test();
c.train(count);

testそれはすべて何に依存しtrain、そのcount目的は...

于 2013-09-19T08:04:09.310 に答える