【问题标题】:Incompatible conversion char不兼容的转换字符
【发布时间】:2015-01-21 19:15:04
【问题描述】:

我的代码有一个小问题,由于未知原因编译器弹出两个错误,导致我无法编译以下代码。我收到的通知是:

多字符字符常量[-Wmultichar]

将 'int' 赋值给 char[4] 时的类型不兼容;

这很奇怪,因为我将 char 值分配给 char 变量。我究竟做错了什么 ?

 #include <iostream> 
 using namespace std; 

 class People 
 { 
    public: 
           int age; 
           char name[4]; 
 }; 

 int main() 
 {
    People arrayP[5] = {{"Paul", 29}, {"Sue", 31}, 
                        {"Jack", 22}, {"Nil", 32}}; 

    arraP[4].name = 'Ope'; 

    for(int i=0; i<5; i++) 
    { 
        cout <<"Name: " << arrayP.name[i] << ", " << arrayP.age[i]<<endl
    }
 return 0;
 }  

【问题讨论】:

  • 这远不是这里的严重问题。
  • 您不能以这种方式分配给字符数组(C 样式字符串)。您应该改用std::string(或使用C 字符串函数,例如strcpy)。此外,[i] 应该在 arrayP 旁边,而不是在成员变量之后。

标签: c++ char


【解决方案1】:

你有两个错误:

  • 如果你使用aggregate initialization,你必须遵守类定义的相同布局。所以{"Paul", 29} 不正确,而{29, "Paul"} 是。

  • char name[4] 太短,无法包含 "Paul",因为 NUL 终止符没有空间。由于您使用 C++ 工作,只需使用 std::string,没有任何借口。

【讨论】:

    猜你喜欢
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多