#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:'初始化':无法从'initializer-list'转换为'TDate'和2 IntelliSense:初始化值太多。当我删除bool valid和int ID时程序可以工作。为什么会这样?
答案 0 :(得分:3)
您收到错误是因为您尝试从聚合初始化列表初始化TDate
。当类型具有私有成员时(例如,在您的情况下,ID
和valid
),则无法执行此操作。
您可以通过从三个int
并使用TDate t1, t2, t3(1, 2, 3)
为您的结构提供构造函数来解决此问题。
答案 1 :(得分:1)
要做Set chosenfolder = CreateObject("shell.application").BrowseForFolder(0,"Select a folder",0)
,你必须使用三个参数来构造TDate的构造函数,如下所示:
t3={ 1, 2, 3 };
并使用以下方法实现:
TDate(int i, int i1, int i2);
如果您不想创建构造函数,则创建如下对象:
TDate::TDate(int i, int i1, int i2) {
}