0
votes

Comment passer des paramètres d'une structure à une fonction correctement?

J'aimerais que la fonction DateCreate passe les paramètres donnés à ceux de la structure.

J'ai essayé en ayant la date de variable D en tant que paramètre de fonction, mais cela me montre toujours le jour d'erreur «champ» / mois / année »n'a pas pu être résolu». P>

struct Date{
int day;
int month;
int year;
} ;

Date dateCreate (int d, int m, int y){
 Date d;
 d.day =d;
 d.month = m;
 d.year =y;
return 0;
};


int main() {
 int d,m,y;
 cin << d << m << y;
 cout << dateCreate(d,m,y); //Not completely sure if this is right either.


return 0;
}


0 commentaires

4 Réponses :


2
votes

daecreate doit renvoyer d , pas 0 .

pour expression COUT << DATECREATE (D, M, Y) Pour compiler, vous devez implémenter std :: ostream et opérateur << (STD :: Ostream &, date Const Const &) .


0 commentaires

1
votes

plutôt qu'une fonction libre, je vous suggère de donner votre struct code> un constructeur xxx pré>

alors vous pouvez créer cet objet comme p>

cout << date;


0 commentaires

0
votes

La manière la plus concise de correction de votre extrait permet de fournir un opérateur de sortie pour les objets date , par exemple xxx

puis à l'aide des opérateurs corrects pour lire l'entrée de l'utilisateur < / p> xxx

et enfin à l'aide de la date Constructeur généré par le compilateur: xxx

vous donez T Besoin d'une fonction Création d'un objet de date tant que vous ne vérifiez pas l'entrée.

Note, cependant, que date peut désormais être dans des états non valides (jour négatif ou Valeurs de mois, etc.), donc pour le raffinement futur, vous devez implémenter un constructeur approprié qui jette une entrée illégale ou modifier la fonction créée de telle sorte qu'elle Renvoie un std :: en option qui est vide ( std :: nullopt ) sur une entrée illégale.


0 commentaires

1
votes

Code équivalent:

int main()
{
    Date d{1, 1, 1980};
    in >> d;
}


0 commentaires