创建一个char数组,其大小由参数-C++给出

kak*_*ush 0 c++ static-array

我有一个带有静态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

我怎样才能解决这个问题?

hmj*_*mjd 5

您只需要定义static buffer一次,它只被声明.将以下内容添加到一个.cpp文件中:

char* ABC::buffer;
Run Code Online (Sandbox Code Playgroud)

请注意,每次ABC创建实例时,先前分配的内容buffer都将丢失(内存泄漏),这不是您想要的.

更强大的解决方案将具有buffer实例(非静态)成员.一个更强大的解决方案将使用std::string而不是char*为您管理动态内存分配.