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