在尝试编译存储“参与者”的简单链接列表时,我遇到了一个非常奇怪的错误。但是我清楚地给它提供了正确的数据,可以确认,因为它在不使用初始化列表时工作(做一个赋值运算符“=”)。
Bellow是相关的代码块:
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')
关于问题是什么的任何想法? 非常感谢任何帮助!
最诚挚的问候,Erik Jansson
答案 0 :(得分:4)
您正在尝试执行Participant
的聚合初始化,其中第一个元素是unsigned int
。当然,您在初始化列表中给出的一个参数与该初始化不匹配。
我想说这是一个很好的例子,说明为什么绝对无处不在切换到C ++ 11风格的{}
初始化,无论如何都容易出错。
有什么问题:
Participant tempData = list->data;
或:
Participant tempData(list->data);