Oop 如何访问基类中的非公共变量?

Oop 如何访问基类中的非公共变量?,oop,language-agnostic,Oop,Language Agnostic,我使用的是派生类的方法,大致如下所示: Class Base { private: int variableIWantToAccess; } Class Derived : public Base { public someMethod() { variableIWantToAccess++; <<-----ERROR } 如何访问在基类中声明的变量?我无法访问它,因为它是私有的。您应该将它声明为受保护的,而不是私有的。 类的受保护

我使用的是派生类的方法,大致如下所示:

Class Base
{
   private:
     int variableIWantToAccess;

}

Class Derived : public Base
{

   public someMethod() {
        variableIWantToAccess++;   <<-----ERROR

}
如何访问在基类中声明的变量?我无法访问它,因为它是私有的。

您应该将它声明为受保护的,而不是私有的。 类的受保护成员只能由类的子体访问。

您应该将其声明为受保护而不是私有。
类的受保护成员只能由类的子体访问。

将字段保留为私有,并创建一对受保护的getter/setter方法,原因与不公开公共字段相同

Class Base
{
   private:
     int variableIWantToAccess;

   protected:
     int GetVariable() { return variableIWantToAccess; }
     void SetVariable(int var) { variableIWantToAccess = var; }

}

将字段保留为private,并创建一对受保护的getter/setter方法,原因与不公开公共字段相同

Class Base
{
   private:
     int variableIWantToAccess;

   protected:
     int GetVariable() { return variableIWantToAccess; }
     void SetVariable(int var) { variableIWantToAccess = var; }

}

你不能,使你的字段成为受保护的属性。你不能,使你的字段成为受保护的属性。显然,一个充当getter的受保护函数才是正确的选择,而不是将变量声明为受保护的,但你确实给我指明了正确的方向,谢谢你,显然,一个充当getter的受保护函数才是正确的选择,没有声明变量为受保护的,但您确实为我指明了正确的方向,谢谢