class InterfaceA
{
public:
virtual void f () = 0;
};
class A :
private InterfaceA
{
public:
void f () {}
};
class B :
public A
{
private:
/*::*/InterfaceA * m_a; // Adding "::" makes it work
};
GCC 和 VS2008 说‘class InterfaceA’ is inaccessible
。如果我m_a
用明确的全局范围声明一切都编译得很好。
upd:m_a
是 a pointer
,而不是对象本身。事实上,为什么我不能声明a pointer
以及为什么添加“::”可以解决这个问题?