2

尝试在 Visual Studio (2010) 中编译我的代码时遇到了一个奇怪的问题;这是一个孤立的(和简化的)示例:

class A
{
public:
  enum {
    VALUE   = 0
  };
};

namespace ns
{

class A;

class B
{
public:
  B(int val = ::A::VALUE) // this line
  {}
};

class A : public ::A
{
public:
};

}

这给出了以下错误:error C2027: use of undefined type 'ns::A'。这是VS中的错误还是我做错了什么?

更新:这似乎是 Visual Studio 特有的错误。这是 Microsoft Connect 上建议的解决方法:

class B
{
public:
  typedef ::A A1;
  B(int val = A1::VALUE)
  {}
};
4

1 回答 1

1

这是 VC10 中的一个错误。您的::A类名是完全限定的,并且A全局命名空间中的定义对编译器是可见的。此外,GCC 4.7.2 编译它没有问题。

于 2013-05-06T19:16:06.170 回答