【发布时间】:2013-09-23 13:16:12
【问题描述】:
class A
{
public:
void virtual magic() = 0;
void bar()
{
magic(); // this should be legal
}
};
class B: public A
{
public:
void magic()
{
cout<<"implement magic here"<<endl;
}
};
class C: public B
{
void foo()
{
magic(); // this should not be allowed, i.e. create compile-time error
}
};
因此,B 的纯虚拟基类 A 应有权访问 magic(),但不能访问 B 的任何派生类 C。这可以使用访问说明符和/或友元声明或以任何其他方式实现吗?
【问题讨论】:
-
不清楚你在问什么。
-
@syam 我想通过 A 访问魔法,但同时 C 不应该能够访问魔法。