error C2440: 'initialisation' : impossible de convertir de 'initialiseur-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;

}

pourquoi j'obtiens une Erreur 1 error C2440: 'initialisation' : impossible de convertir de 'initialiseur-liste" à "TDate' et 2 IntelliSense: trop d'initialiseur de valeurs. Quand j'enlève bool valide et int ID les programmes de travaux.Pourquoi est-il si?

J'aime ce C++ moderne façon d'initialisation, mais a constaté que dans MSVS 2015, il ne fonctionnera pas si vous avez struct champs initialiseurs comme struct TDate { int day = 0; }; alors que celui-ci fonctionne struct TDate { int day; };

OriginalL'auteur Fatima Rashid | 2015-10-25