0

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

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

4

1 回答 1

5

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

char* ABC::buffer;

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

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

于 2012-06-28T13:54:34.720 回答