battleutils.cpp:1037:错误:声明'int32 battleutils :: AbilityBenediction(CBattleEntity *,CBattleEntity *)'的明确资格
这个错误究竟意味着什么?
这里的第一行是1037(在battleutils.cpp中):
int32 battleutils::AbilityBenediction(CBattleEntity* PCaster, CBattleEntity* PTarget)
{
....
return blah;
}
在头文件下:
namespace battleutils
{
就是这样:
int32 AbilityBenediction(CBattleEntity* PCaster, CBattleEntity* PTarget);
.cpp文件正确包含头文件。
答案 0 :(得分:18)
我遇到了同样的问题。我有一些使用MS Visual Studio编译的源代码,但在Linux中使用g ++它给了我:
... error: explicit qualification in declaration of '...
当实现已经在namespace foospace {...}
内并且实现再次为命名空间int foospace::barfunction(int blah){return 17;}
时,会出现此错误。
基本上,如果实现(你.cpp文件中的代码)已经在namespace foospace {...}
内,那么从函数定义中删除foospace::
。
答案 1 :(得分:6)
嗯,这不是这个特定问题的答案,但是因为这是搜索此错误消息时Google搜索的第一个结果,我可能会告诉我在声明两次命名空间时收到此错误消息(当不需要) - 像这样
错误:宣布......的明确资格。
namespace foo {
// REMOVE THIS "foo::" from here
void foo::myFunction(int x) {
// ...
}
}
初学者的错误。检查您的命名空间。它要么丢失,要么多次声明或错误的命名空间 - 我会假设。
答案 2 :(得分:0)
很抱歉,如果上面已经提到过。 我之所以来到这里是因为我已经从MSVC(Windows)切换到我的Archlinux安装,以便有效地测试交叉编译。
因此,请“意识到”使用命名空间额外限定条件的MSVC(Visual Studio)是允许的-至少使用/ W1开关(级别1警告),因此忽略了额外限定条件(其内部的显式命名空间)。注意,在gcc中;铛; msvc,该错误不会发生在类成员和函数参数上,这就是令我困惑的仅适用于“单元/文件”函数的额外限定错误的原因...