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