初始化静态指针数组C++
问题描述:
我有我的课:初始化静态指针数组C++
class Exec {
static Process* procs_table[];
public:
Exec(int num, info_init_proc* proc);
};
info_init_proc是信息的自定义结构必要的初始化进程对象
并尝试建立如下的构造:
Exec::Exec(int num, info_init_proc* proc) {
int i;
for (i = 0; i < num; i++) {
Exec::procs_table[i] = new Process(proc[i]);
}
}
它可以编译,但是当我建立我得到“未定义的符号procs_table”错误。
应该修改什么?
答
直接的问题是你的静态数组是声明的,但没有定义。添加此行到您的CPP文件将解决这个问题:
Process* Exec::procs_table[SOME_MAX_VALUE];
然而,看来的static
的选择是根本不正确在这里,因为你不知道n
,分配的大小,直到运行时。在这种情况下,包含进程指针的单个对象std::vector
会更合适。