Этот код:
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
- Почему я могу вызвать защищенный метод, но не принимать его адрес?
- Есть ли способ отметить что-то полностью доступное из производных классов, а не только доступное из производных классов и в отношении указанного производного класса?
BTW: Это связано с, но я ищу ссылку на то, где это вызывается в спецификации или тому подобное (и, надеюсь, это приведет к как заставить вещи работать так, как я ожидал).