gpt4 book ai didi

c++ - 命名空间内的前向声明

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:49 24 4
gpt4 key购买 nike

尝试在 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)
{}
};

最佳答案

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

关于c++ - 命名空间内的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com