应用结构

时间:2010-10-24 11:41:49

标签: c++ class static

class Base
{
    private: bool mEnabled;
    public: bool getEnabled() { return mEnabled; }
};

class First : public Base;
{
  // ...
};

class Second : public Base
{
   Second() {
      // I have to check First::mEnabled
   }
};

class Manager
{
    First obj1;
    Second obj2;
};

我有一些类经理处理另外两个类。我必须在另一个这样的对象中检查mEnabled变量。什么是正确的方法?如果我要做

,那会是对的吗?
static bool mEnabled;
static bool getEnabled();

P.S。这个类只有一个对象。

3 个答案:

答案 0 :(得分:0)

您可以通过在函数名称前加上对象的名称和点来调用某些对象的成员函数:

void f(First& first)
{
  if(first.getEnabled()) 
    ...
}

如果您通过指针传递,请使用->代替.

void f(First* first)
{
  if(first->getEnabled()) 
    ...
}

答案 1 :(得分:0)

那么,你想要有两个不知道彼此沟通的课程吗?虽然很可能假设你的类只在你的应用程序生命周期中被实例化一次,但我不会这样做。这是不好的做法。

我肯定建议让上课了解另一个,如上面的回复所示。如果你需要这样做,你可以使用一个指向你的类的全局指针,并在实例化之后分配它。

答案 2 :(得分:0)

您可能会在班级经理中检查getEnabled,而不是静态:

if( obj1.getEnabled() )
{
    Second obj2;
}

问题是你想要访问另一个类而没有任何关系。因此,更高级的课程需要创建这种关系。