struct Person { string name; int count; };
Person leader[3] = {{"li",0}, {"zhang",0}, {"fun",0}};
// error C2440: cannot convert from 'char [3]' to 'struct Person'
std::string 等非 POD 類型成員的結構體使用花括號初始化列表。-std=c++11。Person leader[3];
leader[0] = {"li", 0}; // 需 C++11
// 或
leader[0].name = "li"; leader[0].count = 0;
leader[1].name = "zhang"; leader[1].count = 0;
...
struct Person {
string name; int count;
Person(string n, int c) : name(n), count(c) {}
};
Person leader[3] = { Person("li",0), Person("zhang",0), Person("fun",0) };
| 編譯器 | 最低版本 | 啟用標誌 |
|---|---|---|
| MSVC | VS2010 部分 / VS2015 完整 | /std:c++14 (VS2017+) |
| GCC | 4.3+ | -std=c++11 |
| Clang | 3.1+ | -std=c++11 |
確認編譯器支援 C++11 並啟用相應標準,或改用構造函數初始化,即可消除 C2440 錯誤。