![](/img/trans.png)
[英]Cant initialize array error C2440: '=' : cannot convert from 'initializer-list' to 'abd'
[英]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
。 當類型具有私有成員(例如,對於您而言, ID
和valid
)時,將無法執行此操作。
您可以通過為三個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.