我有一個類,這是不以任何其他類所擁有,因此通過靜態方法訪問,例如addKeyword()
:在C++中使用靜態變量
class Foo {
public:
/* other public methods and such */
static void addKeyword(Keyword& keyword);
private:
static Foo a;
std::vector<Keyword> keywords;
/* Foo's private variables and methods */
void addKeywordToObject(Keyword& keyword);
}
做這樣的想法是,我可以再調用:
//called from elsewhere in the program
void Foo::addKeyword(Keyword& keyword){
a.addKeywordToObject(keyword);
}
//called from addKeyword() above
void Foo::addKeywordToObject(Keyword& keyword){
this->keywords.push_back(keyword);
}
並且該關鍵字被添加到關鍵字的向量中。
不過 - 我敢肯定有什麼東西我做的根本錯誤 - 當我嘗試編譯這段代碼,我得到的鏈接錯誤:
Undefined symbols for architecture x86_64: "Namespace::Foo::a", referenced from:
Namespace::Foo::addKeyword(Namespace::Keyword) in Foo.o.
我有一種感覺,那是因爲我錯誤地使用靜態變量,但我不知道如何或爲什麼。任何人都可以指出我正確的方向嗎?
謝謝!
工作正常!你能告訴我爲什麼是這樣嗎? –