代码之家  ›  专栏  ›  技术社区  ›  Saftkeks

LNK2001静态属性和方法错误(Qt,C++)[重复]

  •  0
  • Saftkeks  · 技术社区  · 7 年前

    我有课 EventType ,其标题如下(仅限相关行):

    #include<string>
    #include<unordered_set>
    #include<iostream>
    
    class EventType
    {
    public:
        static EventType* getByName(std::string name);
    
        static EventType* getByID(std::string id);
    
        static void setAllEventTypes(std::unordered_set<EventType*> events);
        //...
    
    private:
        static std::unordered_set<EventType*> allEvents; //stores all events
        std::string name;
        //...
        std::string akaID;
    };
    

    来源:

    EventType* EventType::getByName(std::string name) {
        foreach(EventType * event, EventType::allEvents) {
            if(event->name == name) {
                 return event;
            }
        }
        std::cout << "Error: Event with name " << name << "could not be found.\n";
    }
    
    EventType* EventType::getByID(std::string id) {
        foreach(EventType * event, EventType::allEvents) {
            if(event->akaID == id) {
                return event;
            }
        }
        std::cout << "Error: Event with aka.ID " << id << "could not be found.\n";
    }
    
    void EventType::setAllEventTypes(std::unordered_set<EventType*> events) {
        EventType::allEvents = events;
    }
    

    现在我得到了 LNK2001 -错误:

    eventtype.obj : error LNK2001: unresolved external symbol ""private: static class std::unordered_set<class EventType *,struct std::hash<class EventType *>,struct std::equal_to<class EventType *>,class std::allocator<class EventType *> > EventType::allEvents" (?allEvents@EventType@@0V?$unordered_set@PEAVEventType@@U?$hash@PEAVEventType@@@std@@U?$equal_to@PEAVEventType@@@3@V?$allocator@PEAVEventType@@@3@@std@@A)".
    

    即使我没有使用EventType类之外的任何静态方法,我也会出现这个错误。为什么会发生这种情况?EventType不应该链接到自身吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   piwi    7 年前

    您声明 allEvents 但是没有定义它,您需要在源文件中这样做:

    std::unordered_set<EventType*> EventType::allEvents;
    
    推荐文章