2010-03-18 15 views
0

Je reçois l'erreur LNK2001. Le code a été inclus ci-dessous. Quelqu'un peut-il m'aider s'il vous plaît?erreur LNK2001 dans le code

Error 3 error LNK2001: unresolved external symbol "private: static class std::vector<struct _UpdateAction,class std::allocator<struct _UpdateAction> > InstrumentCache::actionTaken" ([email protected]@@[email protected][email protected]@[email protected][email protected]@@[email protected]@@[email protected]@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" 
+0

Pour un article récent associé, voir: http://stackoverflow.com/questions/2470737/why-cant-initialize-the-static-member-in-a-class-in-body-or-in -the-header-fi –

+0

duplication possible de [symbole externe non résolu sur les membres de la classe statique] (http://stackoverflow.com/questions/195207/unresolved-external-symbol-on-static-class-members) – Mark

Répondre

2

Il semble qu'il vous manque la définition de actionTaken (la déclaration dans la classe n'est pas suffisante). Est-ce que l'ajout

ActionTakenVector InstrumentCache :: actionTaken;

dans l'aide PerformanceTest.cpp?

+0

Oh, défini à droite, non initialisé. Eh bien, initialisé, aussi. Difficile de garder la terminologie droite parfois. – Dathan

2

Les membres statiques doivent être initialisés. Quelque part en dehors de votre classe, vous devez écrire ActionTakenVector InstrumentCache::actionTaken, ce qui devrait initialiser ce champ statique et se débarrasser de votre erreur.

+0

Merci beaucoup il a corrigé le problème – aajkaltak