我有一个看起来像这样的课:
class Team
{
protected:
string name_;
Pixel color_;
static vector<Team>* teams_;
public:
string name() { return name_; };
Pixel color() { return color_; };
static void setTeams(vector<Team>* t) { teams_ = t; };
static vector<Team>* teams() { return teams_; };
}
它主要由吸气剂/阻气剂组成。
它们设置在main中的其他位置,例如:
Team::setTeams(&activeTeams);
但是我得到了错误:
unresolved external symbol "public: static class std::vector<class Team,class std::allocator<class Team> > * Team::teams_"
我怀疑是因为teams_
向量没有初始化,但是作为抽象类,它永远都不应初始化或调用其构造函数。我该怎么办?
答案 0 :(得分:0)
具有static
的成员变量存在independently from any instances。因此,您必须对其进行初始化。
您的类是抽象的事实(对于您而言,编译器无法知道),不会改变任何事情。
答案 1 :(得分:0)
由于在类声明中有一个static
模板,因此应像这样在源代码(也称为.cpp
)上对其进行初始化。
vector* Team::teams_ = new vector<Team>();