我有一个带有静态字符数组的类。
数组的大小是argv
中给出的。
我想做这样的事情:
class ABC {
public:
static char *buffer;
ABC(int size) {
ABC::buffer = new char[size];
}
}
// in other file:
ABC tempVar(atoi(argv[1]));
但这似乎不起作用。我得到的错误如下:
错误2错误LNK2001:未解析的外部符号“public:static char * ABC :: buffer“(?buffer @ ABC @@ 2PADA)gpslib.lib
我该如何解决这个问题?
答案 0 :(得分:5)
您需要定义static buffer
一次,它只是声明了。将以下内容添加到一个.cpp
文件中:
char* ABC::buffer;
请注意,每次创建ABC
的实例时,先前分配的buffer
都将丢失(内存泄漏),这不是您想要的。
更强大的解决方案将buffer
作为实例(非静态)成员。更强大的解决方案是使用std::string
而不是char*
,并为您管理动态内存分配。