如何修复错误:未知的类型名称"namespace"
How to fix error: unknown type name ‘namespace’
#ifndef UNO_ACTION_
#define UNO_ACTION_
namespace Uno
{
namespace Game
{
class Game;
}
} // namespace
namespace Uno
{
namespace Action
{
using ::Uno::Game::Game;
class Action
{
public:
virtual bool isDisposeable() = 0;
virtual void takeAction(Game* game) = 0;
virtual ~Action() {}
};
}
}
#endif
我在ubuntu 12.04上编译了这些代码,它返回到错误集:
action.h:4:1: error: unknown type name ‘namespace’
action.h:4:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
action.h:8:1: error: unknown type name ‘namespace’
action.h:8:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
如何解决这些错误?
听起来你正试图用C编译器编译C++代码。尝试使用g++
而不是gcc
,并为文件提供C++扩展名,如.cpp
(而不是.c
)。
YCM和clang出现此问题。原来,丢失的标志是"-x", "c++"
。
来自官方文件:
-x<语言>:将后续输入文件视为具有类型语言。
我遇到了类似的问题,发现了这个问题,但解决方案与我的不完全匹配,所以我在这里添加了我的解决方案。
在我的例子中,我在.cpp文件和.c文件中包含了一个头文件。解决方案是拆分标头的名称空间部分,因为这显然只在.cpp文件中需要。
相关文章:
- "using namespace std;"在C++的作用是什么?
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 为什么我需要做'using namespace std'而不是"使用 std::cout"?
- 'using namespace'实现细节的便捷方法(仅标头库)?
- C++中"typedef"、"using"、"namespace"和"using namespace"有什么区别?
- C++ "using tcp=x"到"namespace tcp=x"有什么区别
- 如何解决"'mutex' in namespace 'std' does not name a type"?
- 以前的'namespace reference { }'声明
- "using namespace"子句在什么范围内有效?
- C++ - 尝试在类中使用全局时'Not a class or namespace'
- 如何找到"using namespace std"的违规用法?
- 声明"使用命名空间 C;"对于证明 [namespace.udir]/3 中的示例中显示的结果至关重
- 在实现文件中,我们应该更喜欢"using namespace"指令还是将实现包装在命名空间 { } 中?
- 'char (*RtlpNumberOf(T (&)[N]))[N]':无法从"char *"
- Arduino IDE 错误 - 无法找到数字文字运算符"运算符""f900ff"
- "inline"、"constexpr"或"noexcept"
- "非静态数据成员之前需要构造函数" - 我是否使用"boost::variant"
- 我必须安装"libbitcoin-server"才能包含"bitcoin.hpp"
- 如何根据对象名称将'using namespace'添加到类定义中?
- 修复第三方代码:"error: ‘enable_if’ in namespace ‘std’ does not name a template type"