C++ C+中的值访问+;

C++ C+中的值访问+;,c++,qt,visual-c++,qt4,C++,Qt,Visual C++,Qt4,嗨 我有两门课A和B, 这里A继承了B,现在我想从A访问B中的一个变量,我在B中包含了一个头并尝试访问,但在QObject中显示了一些错误 有可能这样做吗。。请帮助您的成员变量是私有的吗?那么您不能声明它是您的成员变量private?那么你就不能声明它受保护了,我不确定你的Q是否正确 class A { public: int nValueA; protected: int nValueB; private: int nValueC; }; class B : public A {

我有两门课A和B, 这里A继承了B,现在我想从A访问B中的一个变量,我在B中包含了一个头并尝试访问,但在QObject中显示了一些错误


有可能这样做吗。。请帮助

您的成员变量是私有的吗?那么您不能声明它是您的成员变量
private
?那么你就不能声明它受保护了,我不确定你的Q是否正确

class A {
public:
  int nValueA;
protected:
  int nValueB;
private:
  int nValueC;
};

class B : public A {
public:
    B();
    int x, y, z;
}; 
B::B(): 
x(nValueA), //-->OK
y(nValueB), //-->OK
z(nValueC)  //-->error due to child can't inherit parent's private member
{}

void main(){
  B object;
  object.nValueA = 888; //--> valid
  object.nValueB = 888; //--> error since protected member is not accessible
  object.nValueC = 888; //--> error since private member is not accessible
}
可能的解决办法:

class A {
public:
  int nValueA;
  int nValueB;
  int nValueC;
};

我不确定你的Q是否正确

class A {
public:
  int nValueA;
protected:
  int nValueB;
private:
  int nValueC;
};

class B : public A {
public:
    B();
    int x, y, z;
}; 
B::B(): 
x(nValueA), //-->OK
y(nValueB), //-->OK
z(nValueC)  //-->error due to child can't inherit parent's private member
{}

void main(){
  B object;
  object.nValueA = 888; //--> valid
  object.nValueB = 888; //--> error since protected member is not accessible
  object.nValueC = 888; //--> error since private member is not accessible
}
可能的解决办法:

class A {
public:
  int nValueA;
  int nValueB;
  int nValueC;
};

请张贴准确的错误和代码!在 QObjult中的一些错误指向了QT部分问题的一个问题,不仅仅是C++的一个问题。通常,如果
base
中的成员是公共的或受保护的,则所有派生类都可以访问它。请发布准确的错误和代码!在 QObjult中的一些错误指向了QT部分问题的一个问题,不仅仅是C++的一个问题。通常,如果
base
中的成员是公共的或受保护的,则所有派生类都可以访问它。