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;
    ....
}

然后毫不奇怪,我收到一条错误消息,提示未定义计数。所以我想做的是在我的train函数中使用test. 有没有什么好的方法可以在不使用任何额外依赖项的情况下做到这一点?谢谢你。

4

2 回答 2

3

嗯,是。这称为成员变量。和你的一模一样bool check;

private:
    bool check;
    int count;

然后直接在你的函数中使用它。

void myClass::test()
{
     count = 9;
     //Same as this->count = 9;
} 

void myClass::train()
{ 
    int newValue = count;
    //Same as int newValue = this->count;
}
于 2013-09-19T08:02:58.027 回答
2

在您的示例中,当方法测试完成其工作时,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);

这一切都取决于什么testtrain并且count是为了......

于 2013-09-19T08:04:09.310 回答