当我尝试编译一个存储“参与者”的简单链表时,遇到了一个非常奇怪的错误。然而,我清楚地给它提供了正确的数据,这是可以确认的,因为它在不使用初始化列表时有效(执行分配运算符“=”)。
以下是相关代码块:
struct Participant
{
unsigned startNumber;
std::string forename;
std::string surname;
std::string club;
float finishTime;
};
struct ListNode
{
ListNode* next;
Participant data;
};
Participant tempData {list->data}; //error occurs here.
下面是我得到的错误:
List.cpp:15:36: error: cannot convert ‘Participant’ to ‘unsigned int’ in initialization
替换:
Participant tempData {list->data};
与:
Participant tempData = list->data;
编译并运行顺利。
g++ (Debian 4.7.2-5) 4.7.2
CrunchBang (Debian 7 'Wheezy')
关于问题出在哪里有什么想法吗? 非常感谢任何帮助!
最诚挚的问候,埃里克·詹森
最佳答案
您正在尝试执行Participant
的聚合初始化,其中第一个元素是unsigned int
。当然,您在该初始化列表中给出的一个参数与该初始化不匹配。
我想说,这是一个很好的例子,说明了为什么在任何地方无缘无故地切换到 C++11 样式 {}
初始化都容易出错。
有什么问题:
Participant tempData = list->data;
或者:
Participant tempData(list->data);
关于c++ - 初始化列表: cannot convert ‘Participant’ to ‘unsigned int’ in initialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20552237/