静态variables链接错误
我在Mac上编写C ++代码。 编译时为什么会出现这个错误?
未定义的架构i386符号:“Log :: theString”,引用来自:libTest.a(Log.o)中的Log :: method(std :: string)ld:符号(s)not found for architecture i386叮当声:错误:链接器命令失败,退出代码1(使用-v查看调用)
不知道如果我的代码是错误的,或者我必须添加额外的标志Xcode。 我当前的XCodeconfiguration是“静态库”项目的默认configuration。
我的代码:
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; }
我从testing代码调用'方法',这样:'Log :: method(“asd”):'
谢谢你的帮助。
您必须在cpp
文件中定义静态。
Log.cpp
#include "Log.h" #include <ostream> string Log::theString; // <---- define static here void Log::method(string arg){ theString = "hola"; cout << theString << endl; }
你也应该删除using namespace std;
从标题。 在你仍然可以的时候养成习惯。 这将污染全球名称空间与std
任何地方,包括标题。
你声明了static string theString;
,但还没有定义它。
包括
string Log::theString;
到你的cpp
文件