why variable used meaning functions are c++ xcode static-libraries clang static-methods

c++ - used - volatile variable c



error de enlace de variable estática (2)

Estoy escribiendo código C ++ en un mac. ¿Por qué obtengo este error al compilar ?:

Símbolos no definidos para arquitectura i386: "Log :: theString", referenciado de: Log :: method (std :: string) en libTest.a (Log.o) ld: símbolo (s) no encontrados para arquitectura i386 clang: error: El comando del enlazador falló con el código de salida 1 (use -v para ver la invocación)

No estoy seguro si mi código es incorrecto o si tengo que agregar banderas adicionales a Xcode. Mis configuraciones actuales de XCode son las predeterminadas para un proyecto de ''biblioteca estática''.

Mi código:

Log.h ------------

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

Log.cpp ----

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

Estoy llamando al ''método'' de un código de prueba, de esta manera: ''Log :: method ("asd'' ''):''

gracias por tu ayuda.


Debe definir las estadísticas en el archivo cpp .

Log.cpp

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

También debe eliminar using namespace std; desde el encabezado. Adquiera el hábito mientras pueda. Esto contaminará el espacio de nombre global con std siempre que incluya el encabezado.


Has declarado static string theString; , pero no lo han definido

Incluir

string Log::theString;

a su archivo cpp