下面的代码给了我一个错误,即'A‘是'B’的一个不可访问的基,我不知道为什么:
class A {};
class B : protected A {};
A foo( A a );
///
B b;
foo(b);对此的任何解释都很感激。
编辑:我想我只是对受保护的继承的性质感到困惑。我认为这意味着任何派生类(在本例中为A)都可以继承其变量及其函数。
发布于 2016-10-05 15:02:43
继承受保护父类的类可以访问它,否则被认为是私有的:
class A {};
class B : protected A {};
A foo(A a) { return a; };
class C : public B {
public:
A foo(C c) { return c; };
};
int main() {
B b;
//foo(b); // Can't implicitly convert, A is protected (might as well be private from this line's perspective)
C c;
A a = c.foo(c); // class C can get A
}https://stackoverflow.com/questions/39877256
复制相似问题