我有一个带有重载构造函数的Test类。通过字符串文字初始化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) {}
};
如何解决这个问题?
答案 0 :(得分:2)
您正在指定一个指向数组的指针,这是不允许的。
即。您无法执行以下操作:
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。