3

可能重复:
C++ 继承 - 无法访问的基础?
为什么编译器会选择模板参数列表中的基类构造函数?

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以及为什么添加“::”可以解决这个问题?

4

0 回答 0