【发布时间】:2012-01-17 17:02:31
【问题描述】:
battleutils.cpp:1037: error: explicit qualification in declaration of '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 文件正确包含头文件。
【问题讨论】:
-
投票关闭为“不包含 MCVE”,发布的代码没有任何问题
-
出现这种情况的一种可能方式是如果您忘记了
},或者没有意识到您在cpp 文件中已经有namespace battleutils。例如,namespace N { int f(); int N::f() {} }给出了相同的错误。在这种情况下,最佳答案的建议修复namespace N { int f(); namespace N { int f() {} } }将隐藏错误消息,但实际上定义了不同的函数N::N::f。我个人更喜欢在我自己的代码中使用显式限定,以便在参数不匹配时生成错误消息(而不是重载或隐藏预期的函数)。
标签: c++ compiler-errors g++