Ошибка LNK2001 в коде - PullRequest
       45

Ошибка LNK2001 в коде

0 голосов
/ 18 марта 2010

Я получаю ошибку LNK2001. Код был включен ниже. Может кто-нибудь помочь мне?

Error   3   error LNK2001: unresolved external symbol "private: static class   std::vector<struct _UpdateAction,class std::allocator<struct _UpdateAction> > InstrumentCache::actionTaken" (?actionTaken@InstrumentCache@@0V?$vector@U_UpdateAction@@V?$allocator@U_UpdateAction@@@std@@@std@@A)    PerformanceTest.obj 

// UpdateAction.h

typedef struct _UpdateAction
{
    enum FIS_ACTION {
        ADDED,
        UPDATED,
        DELETED
    };
    int id;
    int type;
    int legacyType;
    FIS_ACTION action;

}UpdateAction;

typedef std::vector<UpdateAction> ActionTakenVector;

// InstrumentCache.h

#include UpdateAction.h

class InstrumentCache
{
public:
    static ActionTakenVector& GetApplicationUpdateVector ()
    {
    return actionTaken;
    }

    static void ClearApplicationUpdateVector()
    {
        actionTaken.clear();
    }
private:
    static ActionTakenVector actionTaken;
};

// fisClient.h

#include "UpdateAction.h"
#include "InstrumentCache.h"

class FISClient
{
    void FunctionOne()
    {
        ActionTakenVector& rV = InstrumentCache::GetApplicationUpdateVector();
        InstrumentCache::ClearApplicationUpdateVector();
    }
} ;

PerformanceTest.cpp

#include "fisClient.h"

Ответы [ 2 ]

2 голосов
/ 18 марта 2010

Кажется, вам не хватает определения actionTaken (объявления в классе недостаточно). Есть ли добавление

ActionTakenVector InstrumentCache :: actionTaken;

в справке PerformanceTest.cpp?

2 голосов
/ 18 марта 2010

Статические члены должны быть инициализированы. Где-то за пределами вашего класса вы должны написать ActionTakenVector InstrumentCache::actionTaken, что должно инициализировать это статическое поле и избавиться от вашей ошибки.

...