首页 > 解决方案 > 错误:重新定义 'get_pointer'T* get_pointer(T* p) c++11

问题描述

错误:重新定义 'get_pointer'T* get_pointer(T* p)

我收到了您在图片中看到的错误。

//Itemshop_manager.h

#pragma once


#include "stdafx.h" //error: 4th line

#ifdef ENABLE_ITEMSHOP_SYSTEM
class CItemShopManager : public singleton<CItemShopManager>
{
public:
    CItemShopManager();
    ~CItemShopManager();
    
    void                        Initialize();
    void                        LoadItems(BYTE bType, DWORD dwCount, TItemShopItem * pItems);
    void                        LoadEditors(DWORD dwCount, TItemShopEditor* pEditors);
    TItemShopItem               FindItemByID(DWORD id, DWORD category);
    void                        OpenItemShop(LPCHARACTER ch);
    void                        BuyItem(LPCHARACTER ch, DWORD id, DWORD category);
    void                        DeleteItem(LPCHARACTER ch, DWORD id, DWORD category, bool deleteFromDB = true);
    void                        AddItem(LPCHARACTER ch, DWORD vnum, DWORD count, DWORD price, DWORD category);
    void                        EditItem(LPCHARACTER ch, DWORD vnum, DWORD count, DWORD price, DWORD category, DWORD id);
private:
    std::vector<TItemShopItem>  m_vec_itemShopItems;
    std::set<LPCHARACTER>       m_set_pkCurrentViewer;
    std::vector<char*>          m_vec_pkEditors;
    void                        AddEditor(char* szName);
    bool                        IsEditor(LPCHARACTER ch);
    bool                        IsViewer(LPCHARACTER ch);
    void                        AddViewer(LPCHARACTER ch);
    void                        RemoveViewer(LPCHARACTER ch);
    void                        ViewerChatPacket(BYTE bType, const char * szChat);
};
#endif

//cmd_general.cpp

#ifdef ENABLE_ITEMSHOP_SYSTEM
#include "itemshop_manager.h"//error: line 52
#endif

//Itemshop_manager.cpp

#ifdef ENABLE_ITEMSHOP_SYSTEM
#include "itemshop_manager.h"//error: 8th line

谢谢您的帮助。

标准数据文件

template<typename T>
T* get_pointer(T* p)
{
    return p;
}

标签: c++c++11

解决方案


您从 stdafx.h 中丢失#pragma once(或包含 guard )。可能从一个 .cpp 中直接或间接地不止一次地包含 stdafx.h。

但是,如果您打算将 stdafx.h 用作PCH,则#pragma once不需要,但 stdafx.h 应仅包含在 .cpp 中,而不应包含在任何标头中。


推荐阅读