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

时间:2012-06-28 13:52:28

标签: c++ static-array

我有一个带有静态字符数组的类。 数组的大小是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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

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

char* ABC::buffer;

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

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