不兼容的转换字符
Posted
技术标签:
【中文标题】不兼容的转换字符【英文标题】: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
旁边,而不是在成员变量之后。
【参考方案1】:
你有两个错误:
如果你使用aggregate initialization,你必须遵守类定义的相同布局。所以"Paul", 29
不正确,而29, "Paul"
是。
char name[4]
太短,无法包含 "Paul"
,因为 NUL 终止符没有空间。由于您使用 C++ 工作,只需使用 std::string
,没有任何借口。
【讨论】:
以上是关于不兼容的转换字符的主要内容,如果未能解决你的问题,请参考以下文章
java:不兼容的类型:T 无法转换为 java.lang.String
不兼容的类型:java.lang.Object 无法转换为 java.lang.String
BlueJ 错误:“不兼容的类型:int 无法转换为 java.lang.String”和“不兼容的类型:java.lang.String 无法转换为 int”