Fat*_*hid 6 c++ constructor initializer-list visual-studio
#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;
}
Run Code Online (Sandbox Code Playgroud)
为什么我得到错误1错误C2440:'初始化':无法从'initializer-list'转换为'TDate'和2 IntelliSense:初始化程序值太多.当我删除bool valid和int ID时程序可以工作.为什么会这样?
您收到错误是因为您试图TDate从聚合初始化列表中初始化 a 。当类型具有私有成员(例如,在您的情况下,ID和valid)时,这无法完成。
您可以通过从三个ints为您的结构提供构造函数并使用TDate t1, t2, t3(1, 2, 3).