#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が発生する理由: 'initializing': 'initializer-list'から 'TDate'および2 IntelliSenseに変換できません:初期化子の値が多すぎます。 bool validとint IDを削除すると、プログラムは機能しますが、なぜですか?
集計初期化リストからTDate
を初期化しようとしているため、エラーが発生しています。これは、型にプライベートメンバー(たとえば、ID
やvalid
)がある場合は実行できません。
これを回避するには、3つのint
sから構造体のコンストラクタを提供し、TDate t1, t2, t3(1, 2, 3)
を使用します。
行うにはt3={ 1, 2, 3 };
次のように、3つの引数を取るTDateのコンストラクタを作成する必要があります。
TDate(int i, int i1, int i2);
そしてそれを使用してそれを実装します:
TDate::TDate(int i, int i1, int i2) {
}
コンストラクタを作成したくない場合は、次のようなオブジェクトを作成します。
TDate t1 = TDate();