【发布时间】:2012-08-29 13:16:47
【问题描述】:
我有以下代码:
struct A {
protected:
A() {}
A* a;
};
struct B : A {
protected:
B() { b.a = &b; }
A b;
};
奇怪的是它不能编译。罪魁祸首是b.a = &b; 分配:GCC 和clang 都抱怨A() 受到保护,这应该不是问题,因为B 继承了A。我进入了标准的哪个黑暗角落?
【问题讨论】:
-
您只能访问
protected的this' base 成员(同一实例)。this和b不是同一个实例。 -
@MikeSeymour 不。 (但我承认直到最近我才想到完全相同的事情)
-
我确信这个问题已经被问过很多次了,但是很难找到确切的重复项。
-
顺便说一句,作业不是的罪魁祸首,而是其中之一。
-
“无法访问派生类中基类的受保护成员”可能吗?
标签: c++ protected access-control