c++ - 初始化列表: cannot convert ‘Participant’ to ‘unsigned int’ in initialization

标签 c++ gcc c++11 linked-list initializer-list

当我尝试编译一个存储“参与者”的简单链表时,遇到了一个非常奇怪的错误。然而,我清楚地给它提供了正确的数据,这是可以确认的,因为它在不使用初始化列表时有效(执行分配运算符“=”)。

以下是相关代码块:

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/

相关文章:

c++ - 如何将我自己的智能指针传递给函数?

c++ - 使用静态 vector 作为存储

javascript - 使用 javascript 正则表达式列出 C++ 中函数的参数

c++ - 通过命令行使用 gcc 编译 win32 应用程序时,如何链接 .rc(资源)文件?

c++ - 即使锁定失败,带有 try_to_lock 的 unique_lock 是否应该拥有互斥锁?

c++ - 定义模板化静态类成员的不同实例化

c++ - 从 map<key, set<datatype>> 访问元素

c++ - priority_queue operator < 实现麻烦

c++ - 对虚函数 C++ 感到困惑

c - 奇怪的 'asm'操作数有不可能的约束错误