当我尝试在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)
{}
};
哪条线触发错误? – 2013-05-06 19:11:49
我应该让评论更明显吗? – riv 2013-05-06 19:18:32
对不起,我找了它,但一定忽略了它。 – 2013-05-06 19:24:33