第三方图书馆的类包含受保护的成员。如果我们无法修改第三方库的代码,我该如何访问它?
答案 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
}
};