我,这堂课:
class Foo {
private:
Objet grid;
static Player *players[2];
public:
Foo(int len, string ps1, string ps2);
};
当我这样做时:
Foo::Foo(int len, string ps1, string ps2){
grid.setLen(len);
players[0] = new Ange(ps1, grid.getLen()/2, grid.getLen/2);
players[1] = new Demon(ps2);
}
Player
是class
abstract
和Ange
et Demon
的{{1}} class
编译时我将这个错误发送到xCodes
请帮助我!!!架构x86_64的未定义符号: " Partie :: joueurs",引自: Partie.o中的Partie :: Partie(int,std :: __ 1 :: basic_string,std :: __ 1 :: allocator>,std :: __ 1 :: basic_string,std :: __ 1 :: allocator>) ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
请原谅我的英语我是法国人
答案 0 :(得分:1)
静态成员变量仅声明,您还需要定义。
最简单的方法是在某个源文件中添加:
Player *Foo::players[2];
虽然您不应该在构造函数中初始化静态成员变量,但如果您创建两个(或更多)Foo
个对象,您会怎么想?