Visual Studio 2008 - 错误 C2872:'NPC':不明确的符号

Visual Studio 2008 - error C2872: 'NPC' : ambiguous symbol

本文关键字:NPC 不明确 符号 Studio 2008 C2872 Visual 错误      更新时间:2023-10-16

我试图更正代码中的最后一个错误。我已将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应该可以解决问题。