如果我们无法修改类,如何访问受保护的成员?

时间:2011-01-30 08:44:42

标签: c++ visual-c++

第三方图书馆的类包含受保护的成员。如果我们无法修改第三方库的代码,我该如何访问它?

3 个答案:

答案 0 :(得分:8)

受保护的成员只能由类本身,子类或朋友类和方法访问。访问受保护成员的唯一方法是对类进行子类化,然后使用您的子类公开受保护成员。

例如:

class parent {
  /* Other members */
  protected:
    int foo();
}


class child : public parent {
  public:
    int foo();
}

答案 1 :(得分:3)

你应该为该类制作一个特殊的包装器。只需继承库的类并获得对受保护成员的访问权限。由于继承,可以在以下代码中使用包装类而不是基类。

答案 2 :(得分:1)

您可以从派生类访问受保护的成员。

class A
{
  protected:
  int i;
};

class B : public A
{
  void func()
  {
    i; //valid
  }
};