簡體   English   中英

錯誤C2440:“正在初始化”:無法從“初始化列表”轉換

[英]error C2440: 'initializing' : cannot convert from 'initializer-list'

#include<iostream>
using namespace std;
struct TDate
{
    int day, month, year;
    void Readfromkb()
    {
        cout << "\n ENTER DAY MONTH YEAR\n";
        cin >> day >> month >> year;
    }
    void print()
    {
        cout << day << month << year;
    }
    private:
        int ID;
        bool valid;

};
int main()
{
    TDate t1, t2,t3={ 1, 2, 3 };
    t1.Readfromkb();
    t1.print();
    cin.ignore();
    cin.get();
    return 0;

}

為什么我收到錯誤1錯誤C2440:“正在初始化”:無法從“初始化列表”轉換為“ TDate”和2 IntelliSense:初始化值太多。 當我刪除bool有效的和int的ID時,程序可以工作了,為什么呢?

之所以會出現此錯誤,是因為您試圖從匯總初始化列表中初始化TDate 當類型具有私有成員(例如,對於您而言, IDvalid )時,將無法執行此操作。

您可以通過為三個int提供結構的構造函數並使用TDate t1, t2, t3(1, 2, 3)

要做t3={ 1, 2, 3 }; 您必須使TDate的構造函數帶有三個參數,如下所示:

TDate(int i, int i1, int i2);

並使用以下代碼實現:

TDate::TDate(int i, int i1, int i2) {

}

如果您不想創建構造函數,則創建如下對象:

TDate t1 = TDate();

暫無
暫無

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

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