不兼容的转换表

时间:2015-01-21 19:15:05

标签: c++ char

我的代码问题很小,从未知原因编译器弹出两个错误,无法编译以下代码。我收到的通知是:

多字符字符常量[-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;
 }  

1 个答案:

答案 0 :(得分:3)

您有两个错误:

  • 如果使用aggregate initialization,则必须遵循类定义的相同布局。因此{"Paul", 29}不正确,而{29, "Paul"}是。

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