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

拉胡尔

我有一个带有重载构造函数的测试类。通过字符串文字初始化 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么静态const char * template struct成员未初始化

在可变参数构造函数中初始化const数组

从'const char *'到struct中的'char'/未初始化const成员的无效转换

C ++中的struct char数组成员初始化

初始化一个 const char* 数组

声明时无法使用初始化列表初始化const char * / string数组的向量

在构造函数中初始化const char *-会发生内存泄漏吗?

初始化 const 成员并使用父构造函数

初始化const char数组作为重载函数的参数

MSVC为什么不初始化此const结构?

初始化并打印const char指针

为什么将const std :: string&传递给构造函数不允许您将其绑定到初始化程序列表中的const std :: string&成员变量?

从构造函数中的std :: istream初始化const类数据成员

可以在C ++构造函数中初始化const成员吗?

构造函数体中的 C++ 类 const 成员初始化

在类模板中使用条件运算符初始化静态constexpr char数组成员

C中char数组的异常初始化程序

char数组初始化程序中的多余元素

如何在C ++中初始化char * const argv []

在C中初始化char数组

类中的Char数组初始化

为什么无法在类主体中初始化静态const字符串成员

C4838警告,const char *数组的数组初始化

C / C ++将char数组初始化为const char *

为什么此静态const char *初始化体系结构是特定的?

如果缺少const char *数组初始化逗号,则生成编译器警告

如何初始化和访问 const char* const*

数组成员的初始化程序无效

为什么我不能在结构中初始化char数组