【发布时间】:2018-04-17 09:10:42
【问题描述】:
尝试从继承公共的派生类的方法访问基类的受保护成员时出错。
我通过引用将基类的两个对象传递给派生类的方法,并尝试访问对象的受保护成员。然而,编辑抱怨。
总的来说,这是我想要做的:
class A {
protected:
int x;
};
class B:public A
{
public:
void test(A &obj1, A &obj2)
{
obj1.x = 1;
obj2.x = 2;
}
};
而this是编辑的抱怨:
int A::x
protected member A::x (declared at line 5) is not accessible though "A" pointer or object.
我的代码有什么问题,我可以做些什么来纠正它?
谢谢。
【问题讨论】:
-
请复制粘贴错误信息,不要使用外部链接或图片。如果你尝试编译,编译器可能会给你同样的信息,这样更容易复制。
-
显然我还不能上传图片,因为我没有足够的徽章。相反,会自动创建一个链接并写入错误。
-
您可以通过
B对象访问x,但不能通过A对象访问。 -
访问修饰符 Protected 表示成员变量 x 可以被 A 类而不是 B 类内部的方法访问,因此不能通过 B 类访问。
标签: c++ inheritance scope pass-by-reference