这段代码:
class B {
protected:
void Foo(){}
}
class D : public B {
public:
void Baz() {
Foo();
}
void Bar() {
printf("%x\n", &B::Foo);
}
}
产生这个错误:
t.cpp: In member function 'void D::Bar()':
Line 3: error: 'void B::Foo()' is protected
- 为什么我可以调用一个protected方法,但不能获取它的地址?
- 是否有一种方法可以将某些内容标记为完全可从派生类访问,而不仅仅是可从派生类和相关派生类访问?
顺便说一下:这看起来与此相关,但我正在寻找在规范或类似文档中对此进行说明的参考资料(希望这将有助于解决如何使事情按照我的预期工作的问题)。