errore di collegamento variabile statico

Sto scrivendo il codice C ++ su un mac. Perché ottengo questo errore durante la compilazione ?:

Simboli non definiti per l’architettura i386: “Log :: theString”, referenziato da: Log :: method (std :: string) in libTest.a (Log.o) ld: simbolo / i non trovato per l’architettura clang i386: errore: comando linker non riuscito con codice di uscita 1 (usare -v per vedere l’invocazione)

Non sono sicuro se il mio codice è sbagliato o devo aggiungere ulteriori flag a Xcode. Le mie attuali configurazioni XCode sono quelle predefinite per un progetto di ‘biblioteca statica’.

Il mio codice:

Log.h ————

#include  #include  using namespace std; class Log{ public: static void method(string arg); private: static string theString ; }; 

Log.cpp —-

 #include "Log.h" #include  void Log::method(string arg){ theString = "hola"; cout << theString << endl; } 

Sto chiamando il ‘metodo’ da un codice di test, in questo modo: ‘Log :: method (“asd”):’

Grazie per l’aiuto.

È necessario definire la statica nel file cpp .

LOG.CPP

 #include "Log.h" #include  string Log::theString; // <---- define static here void Log::method(string arg){ theString = "hola"; cout << theString << endl; } 

Dovresti anche rimuovere using namespace std; dall'intestazione. Prendi l'abitudine mentre puoi ancora. Questo inquinerà lo spazio dei nomi globale con std ovunque tu includa l'intestazione.

Hai dichiarato static string theString; , ma non l’ho definito.

Includere

 string Log::theString; 

al tuo file cpp