簡體   English   中英

無法從大括號括起初始化列表轉換為struct

[英]Cannot convert to struct from brace-enclosed initializer list

我環顧四周,找不到能夠清楚回答問題的問題所以我發布了這個問題。 我嘗試編譯代碼時收到此錯誤:

welcomebits.cpp:30:74: error: could not convert ‘{tmp_fullname, tmp_user_name, tmp_PIN, tmp_balance}’ from ‘<brace-enclosed initializer list>’ to ‘User’
             User u={tmp_fullname, tmp_user_name, tmp_PIN, tmp_balance};
                                                                      ^

為什么會這樣? 我是c ++的新手,我只是習慣了結構,類和對象仍然超出我的范圍。 我最近通過引用和指針學習了所以我從基本意義上理解的那些。

這是我的結構定義和發生錯誤的函數:

struct User{
    std::string fullname="";
    std::string user_name="";
    float PIN=0.;
    float balance=0.;
};


void create_user_data(std::vector<User>& uv){

    std::ifstream reader;
    std::string holder="";
    char comma=',';
    std::string tmp_fullname="";
    std::string tmp_user_name="";
    float tmp_PIN=0.;
    float tmp_balance=0.;

    reader.open("database.csv");

    while(std::getline(reader, holder)){
            std::istringstream ss(holder);
            std::getline(ss, tmp_fullname, ',');
            std::getline(ss, tmp_user_name, ',');
            ss>>tmp_PIN>>comma;
            ss>>tmp_balance;

            User u={tmp_fullname, tmp_user_name, tmp_PIN, tmp_balance};
            uv.push_back(u);
    }
}

感謝您的時間並幫助每個人。

您需要在啟用C ++ 14支持的情況下進行編譯。 C ++ 11及更早版本的標准不支持此功能。 C ++ 14允許對具有成員初始值設定項的類/結構進行聚合初始化。 如果您刪除了默認成員初始值設定項:

struct User{
    std::string fullname;
    std::string user_name;
    float PIN;
    float balance;
};

然后你的代碼將用C ++ 11編譯。

暫無
暫無

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

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