创建一个字符数组,其大小由参数 - C++ 给出
Creating a char array, whose size is given by parameter - C++
我有一个带有静态字符数组的类。数组的大小以 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*
,并为您管理动态内存分配。
相关文章:
- 我正在尝试传递DMA数组及其大小作为参数,但它给出了错误
- 为什么 CRTP 模板C++给出无效参数错误?
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- 作为模板参数 c++ 给出的类的别名模板
- C++ 模板类:运行时给出的模板参数,如何避免重复大开关情况?
- C++:通过函数参数传递的值给出不同的结果
- 简单的字符串替换给出错误,尽管参数正确
- C++程序给出了太多参数警告
- 当元组给出参数时,如何检查方法是否存在?
- 如何调用作为参数给出的C++类方法?
- 模板-模板参数给出神秘的类型/值不匹配
- 调用作为模板参数给出的另一个类的成员函数
- 如何使用递归按从 1 到 n 的升序打印数字,其中 n 在该函数的参数中给出
- C :将对象引用作为参数给出错误:呼叫class :: function()的匹配函数
- 如何避免删除在C++中作为参数给出的对象
- 以前定义的常量,作为宏参数给出,被认为是字符串文字
- 是否为函数调用中作为实际参数给出的字符数组分配内存
- Eclipse 无法打开作为参数给出的文件
- c++方法参数给出意外输出
- 对作为模板参数给出的结构体中的值进行部分特化