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

Creating a char array, whose size is given by parameter - C++

本文关键字:参数 给出 C++ 一个 数组 字符 创建      更新时间:2023-10-16

我有一个带有静态字符数组的类。数组的大小以 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: 静态字符 * ABC::buffer" (?buffer@ABC@@2PADA) gpslib.lib

我该如何解决这个问题?

您需要

精确地定义一次static buffer,它只被声明过。将以下内容添加到一个.cpp文件中:

char* ABC::buffer;

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

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