我刚刚收到这个错误:“错误:'Symbol'没有命名类型”
我发现了一些关于循环依赖的其他 StackOverflow 问题,但这里不是这种情况。事实上,我可以通过将它放在源文件的顶部来重现它:
class Symbol{int dummy;};
//class Symbol{int again;};
Symbol global_symbol;
这给出了第三行的“错误:'符号'没有命名类型”。如果我取消注释第二行,我仍然会得到同样的错误,但就在它之前我现在得到:“错误:'class Symbol'的重新定义”!
经过更多的探索之后,似乎第 3 方库定义了一个enum
where 。Symbol
那个库和我自己的代码都没有使用命名空间,因此将我的代码移动到命名空间内已经在我的待办事项列表中,我接下来会这样做,希望问题会消失。
但是让我困惑的是为什么我没有得到class Symbol{}
在线错误?如果它与枚举冲突,以至于我永远无法实例化该类,为什么它不抱怨?我觉得我要么缺少标志g++
,要么我的 C++ 知识存在差距。我正在为有人告诉我这是一个功能而不是错误而做好准备。
(顺便说一句,我正在使用g++ -c -std=gnu++0x -Wall -g -Werror ...
和 g++ 4.8.1)