簡體   English   中英

初始化列表:初始化時無法將“參與者”轉換為“無符號整數”

[英]Initialization list: cannot convert ‘Participant’ to ‘unsigned int’ in initialization

嘗試編譯存儲“參與者”的簡單鏈接列表時,出現一個非常奇怪的錯誤。 但是,我顯然為它提供了正確的數據,可以確認這一點,因為它在不使用初始化列表時起作用(執行賦值運算符“ =”)。

以下是相關的代碼塊:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM