【发布时间】:2014-01-21 15:08:57
【问题描述】:
我有一个不属于任何其他类的类,因此可以通过 addKeyword() 等静态方法访问:
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);
}
并且关键字被添加到a的关键字向量中。
但是 - 我确信我做错了什么 - 当我尝试编译这段代码时,我得到了链接器错误:
Undefined symbols for architecture x86_64: "Namespace::Foo::a", referenced from:
Namespace::Foo::addKeyword(Namespace::Keyword) in Foo.o.
我有一种感觉,这是因为我错误地使用了静态变量,但我不确定如何或为什么。谁能指出我正确的方向?
谢谢!
【问题讨论】:
标签: c++ variables static undefined-symbol