Visual Studio 2008 - 错误 C2872:'NPC':不明确的符号
Visual Studio 2008 - error C2872: 'NPC' : ambiguous symbol
我试图更正代码中的最后一个错误。我已将VS6.0迁移到VS2008。
我的最后一个错误是在SimpleNPC.cpp文件中:
.SimpleNPC.cpp(216) : error C2872: 'NPC' : ambiguous symbol
could be '.SimpleNPC.cpp(30) : NPC_Editor::NPC `anonymous-namespace'::NPC'
or 'c:documents and settingst411bureauserveurserver_rc15gt4c serverNPC_Editor/NPC.h(27) : NPC_Editor::NPC'
这里的错误代码是:
case InsSendSoldItemList:{
std::list< NPC::SoldItem > itemList;
std::list< NPC::SoldItem >::iterator i;
npc->theNpc->GetSoldItemList( itemList );
CreateItemList
for( i = itemList.begin(); i != itemList.end(); i++ ){
AddBuyItem( (*i).price, Unit::GetIDFromName( (*i).itemId.c_str(), U_OBJECT, TRUE ) )
}
SendBuyItemList
文件的开头是:
// SimpleNPC.cpp: implementation of the SimpleNPC class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "TFC Server.h"
#include "SimpleNPC.h"
#include "NPCMacroScriptLng.h"
#undef Command
#include "NPC_Editor/NPC.h"
#include "NPC_Editor/Keyword.h"
#include "NPC_Editor/Command.h"
#include "NPC_Editor/IfFlow.h"
#include "NPC_Editor/Assign.h"
#include "NPC_Editor/ForFlow.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
using namespace NPC_Editor;
namespace{
typedef list< Instruction * > InstructionList;
typedef NPC_Editor::NPC NPC;
};
在这个文件中,我们可以找到这个代码:
std::list< NPC_Editor::NPC::SoldItem > soldItems;
你知道为什么会发生冲突吗?非常感谢。
using namespace NPC_Editor;
namespace{
typedef list< Instruction * > InstructionList;
typedef NPC_Editor::NPC NPC;
};
首先要注意,在名称空间的右大括号处不需要;
。
CCD_ 2使得CCD_。typedef NPC_Editor::NPC NPC;
在匿名命名空间中声明了一个名称NPC
,因此可以从全局范围访问。
您的问题正是编译器所说的:一个名称有两个可能的符号,这是不明确的。删除typedef
应该可以解决问题。
相关文章:
- Visual C++(VS2017)中用户定义的转换不明确
- 重载类方法的不明确调用
- 为函数定义符号不明确的指针参数
- 父类的私有函数会导致对具有相同名称和相似参数的子类中的公共函数的不明确调用
- 在 C++17 中的命名空间和子命名空间中重载运算符是不明确的
- C++ 编译器错误:P1LinkedList.cpp:145:错误:重载的"to_string(int&)"调用不明确
- 对重载函数find_first_not_of的不明确调用
- 不明确的成员模板查找
- gcc出现不明确的模板实例化错误
- 调用'Node'构造函数是不明确的
- 如何解决不明确的运算符过载问题?
- 使用 nullptr 调用重载方法是不明确的
- "fpclassify":对重载函数的不明确调用
- 对"列表"的引用不明确,包括头文件
- 删除全局隐式函数 - 避免使用不明确的运算符
- 当接收到不明确的规范时,表示图的邻接列表的数据结构
- "byte":使用Crypto++和Windows SDK时出现不明确的符号错误
- 使用 std::iterator_traits<> 时编译时错误不明确
- 不明确的函数模板
- Visual Studio 2008 - 错误 C2872:'NPC':不明确的符号