【发布时间】:2011-08-14 21:52:35
【问题描述】:
这段代码:
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
- 为什么我可以调用受保护的方法但不能获取其地址?
- 有没有办法标记可以从派生类完全访问的东西,而不是只能从派生类和访问与所述派生类相关的东西?
顺便说一句:This looks related 但我正在寻找一个参考,以说明在规范或类似内容中调用它的位置(希望这将导致如何让事情按我预期的方式工作)。
【问题讨论】:
标签: c++ protected specifications