为什么const char数组成员的初始化在构造函数初始化程序中不兼容?

时间:2018-01-01 13:13:20

标签: c++ arrays

我有一个带有重载构造函数的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) {}
};

如何解决这个问题?

1 个答案:

答案 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。