statique de la variable erreur de lien
Je suis en train d'écrire du code C++ sur un mac. Pourquoi j'ai cette erreur lors de la compilation?:
Les symboles non définis pour l'architecture i386: "Log::theString",
référencé à partir de:
Log::method(std::string) dans libTest.un(Log.o) ld: symbole(s) ne se trouvent pas pour l'architecture i386 clang: erreur: échec de la commande de l'éditeur de liens avec
code de sortie 1 (l'option-v pour voir invocation)
Ne sais pas si mon code est mal ou que j'ai à ajouter des indicateurs supplémentaires à Xcode. Mon XCode configurations sont ceux par défaut pour une "bibliothèque statique" du projet.
Mon code:
Journal.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;
}
Je vais appeler la "méthode" à partir d'un test de code de cette manière:
'Log::method("tsa"):'
merci pour votre aide.
Vous devez vous connecter pour publier un commentaire.
Vous devez définir les variables statiques dans le
cpp
fichier.Log.cpp
Vous devez également supprimer
using namespace std;
de l'en-tête. Prenez l'habitude pendant que vous le pouvez encore. Cela va polluer l'espace de noms global avecstd
où que vous inclure l'en-tête.using namespace *;
dans l'en-tête. C'est plus facile si vous secouez l'habitude plus tôt.using namespace std;
à l'intérieur de votre propre déclaration d'espace de noms 😛namespace your_custom_namespace { using namespace std; }
Vous avez déclaré
static string theString;
, mais je n'ai pas défini.Inclure
à votre
cpp
fichier