我有我的班级:
class Exec {
static Process* procs_table[];
public:
Exec(int num, info_init_proc* proc);
};
info_init_proc是一个自定义结构,包含初始化Process对象所需的信息
尝试创建构造函数,如下所示:
Exec::Exec(int num, info_init_proc* proc) {
int i;
for (i = 0; i < num; i++) {
Exec::procs_table[i] = new Process(proc[i]);
}
}
它可以编译,但是当我构建时,我得到“Undefined symbol procs_table”错误。
应该修改什么?
答案 0 :(得分:3)
当前的问题是声明了静态数组,但未定义。将此行添加到您的CPP文件将解决该问题:
Process* Exec::procs_table[SOME_MAX_VALUE];
但是,似乎static
的选择在这里基本上是不正确的,因为在运行时之前你不知道n
,分配的大小。在这种情况下,具有std::vector
进程指针的单例对象更合适。
答案 1 :(得分:2)
您无法在构造函数中初始化静态成员。构造函数正在创建类的实例,但静态成员由所有实例共享。
这是静态initialization
上的精彩帖子