C++ 初始化列表:无法转换‘;参与者’;至‘;无符号整数’;在初始化中

C++ 初始化列表:无法转换‘;参与者’;至‘;无符号整数’;在初始化中,c++,gcc,c++11,linked-list,initializer-list,C++,Gcc,C++11,Linked List,Initializer List,当我试图编译一个存储“参与者”的简单链表时,我遇到了一个非常奇怪的错误。但是,我很清楚地给了它正确的数据,这是可以确认的,因为它在不使用初始化列表时工作(执行赋值运算符“=”) 以下是相关代码块: struct Participant { unsigned startNumber; std::string forename; std::string surname; std::string club; float finishTime; }; struc

当我试图编译一个存储“参与者”的简单链表时,我遇到了一个非常奇怪的错误。但是,我很清楚地给了它正确的数据,这是可以确认的,因为它在不使用初始化列表时工作(执行赋值运算符“=”)

以下是相关代码块:

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};
与:

编译和运行平稳

g++ (Debian 4.7.2-5) 4.7.2
CrunchBang (Debian 7 'Wheezy')
你知道问题出在哪里吗? 非常感谢您的帮助


致以最诚挚的问候,Erik Jansson

您正在尝试对
参与者执行聚合初始化,其中第一个元素是
无符号int
。当然,您在初始化列表中给出的一个参数与该初始化不匹配

我想说,这是一个很好的例子,说明了为什么毫无理由地切换到C++11风格的
{}
初始化是很容易出错的

问题是:

Participant tempData = list->data;
或:


他们没有什么问题:D我目前正在学习C++(大学),我们一直被教导要经常使用它们。我猜他们错了!非常感谢!很高兴听说一所大学是最先进的,但是,是的,他们是。:)
Participant tempData = list->data;
Participant tempData(list->data);