我有一个带有重载构造函数的测试类。通过字符串文字初始化 const char 数组成员工作正常。但是,通过 const char * 初始化会出现错误 -
错误:将“const char*”分配给“const char [25]”时类型不兼容
class Test
{
const char d_arr[25];
public:
Test() : d_arr("Test Class") {}
Test(const char * arr) : d_arr(arr) {}
};
如何解决这个问题?
您正在分配一个指向数组的指针,这是不允许的。
即您不能执行以下操作:
const char *arr = "ABC";
const char d_arr[25] = arr;
您需要做的是手动复制字符,即:
Test(const char * arr) {
size_t index = 0;
if (arr) {
while (arr[index] && index < 24) {
d_arr[index] = arr[index];
++index;
}
}
d_arr[index] = 0;
}
话虽如此,正如评论中所说,最好使用 std::string。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句