界面无法访问?

时间:2012-09-26 13:54:01

标签: c++ inheritance interface

  

可能重复:
  C++ inheritance - inaccessible base?
  Why does the compiler select the base class constructor inside the template argument list?

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_apointer,而不是对象本身。事实上,为什么我不能声明a pointer以及为什么添加“::”来解决这个问题?

0 个答案:

没有答案