Je ne comprend pas mon erreur à propos de ma structure

Fermé
Modaak Messages postés 67 Date d'inscription mercredi 30 mai 2018 Statut Membre Dernière intervention 4 février 2020 - Modifié le 15 nov. 2019 à 18:22
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 15 nov. 2019 à 17:41
Bonjour, s'il vous plaît je ne comprend pas mon erreur à propos de ma structure l'erreur est dans le main merci d'avance pour toutes aides !

Le code d'erreur de mon ide : error: incompatible types when assigning to type 'Coordonnees *' {aka 'struct _Coordonnees *'} from type 'struct _Coordonnees'

Mes structures dans le .h :

typedef struct _Coordonnees Coordonnees;

#ifndef COORDONNEES_
#define COORDONNEES_
struct _Coordonnees {
  double x;
  double y;
};
#endif

typedef struct _Polygon Polygon;

#ifndef POLYGON_
#define POLYGON_
struct _Polygon {
  unsigned int count;
  Coordonnees* Coordonnees;
};
#endif


Mon main dans le .c :

int main(int argc, char *argv[])
{
    struct _Coordonnees Coordonnees;
    Coordonnees.x = 20;
    Coordonnees.y = 7;
    struct _Polygon Polygon;
    Polygon.count = 0;
    Polygon.Coordonnees = Coordonnees;                 /*L'erreur est ici*/
    return 0;
}


Configuration: Windows / Chrome 78.0.3904.97

3 réponses

Whismeril Messages postés 18279 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mars 2023 888
15 nov. 2019 à 17:35
Bonsoir
2 rappels,
1
Tomsuper Messages postés 1922 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 409
15 nov. 2019 à 17:40
Merci
0
Tomsuper Messages postés 1922 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 409
15 nov. 2019 à 17:14
Bonjour,

As tu inclus ton .h dans ton fichier .c ?

Pourquoi à la 1ere ligne de ton main, tu declares struct _Coordonnees ?

Je te conseil cette ligne la plutôt

Coordonnees Nom_de_variable;

Cordialement.
0
Tomsuper Messages postés 1922 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 409
15 nov. 2019 à 17:18
Typedef : raccourci de définition de type.

Tu définie le type Coordonnées comme une struct _Coordonnees

Donc ta ligne as une fautes et un non sens.

Le non sens étant de pourquoi definire Coordonnees comme type pour ne pas s'en servire ?

L'erreur étant que tu ne peux donné un type comme nom as une variable. comme int char. char étant un type, il ne peut être le nom de la variable int.

Cordialement
0
Modaak Messages postés 67 Date d'inscription mercredi 30 mai 2018 Statut Membre Dernière intervention 4 février 2020 1
15 nov. 2019 à 17:21
oui je l'ai inclus et concernant dans le main struct _coordonnees je l'ai enlever !
0
Tomsuper Messages postés 1922 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 409
Modifié le 15 nov. 2019 à 17:39
int main(int argc, char *argv[])
{
Coordonnees emplacement;
emplacement.x = 20;
emplacement.y = 7;
Polygon Poly;
Poly.count = 0;
if ((Poly.emplacement = malloc(sizeof(Coordonnes))) == NULL)
return (1);
Poly.emplacement = Coordonnees; /*L'erreur est ici*/
return 0; /*pense à free ton Poly.emplacement*/
}

Peux tu tester cela ?
0
Modaak Messages postés 67 Date d'inscription mercredi 30 mai 2018 Statut Membre Dernière intervention 4 février 2020 1
15 nov. 2019 à 17:28
oui
0
Tomsuper Messages postés 1922 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 409
Modifié le 15 nov. 2019 à 17:39
A oui et il y auras ca a changer aussi

typedef struct _Polygon Polygon;

#ifndef POLYGON_
#define POLYGON_
struct _Polygon {
unsigned int count;
Coordonnees* <bold><underline>emplacement</underline></bold>;
};
0
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 1 043
Modifié le 15 nov. 2019 à 17:51
Salut Modaak,

Polygon.Coordonnees = Coordonnees; /*L'erreur est ici*/


Ton erreur que tu mentionnes dans ton message initial est due au fait que tu as définit le membre Coordonnees de la struct Polygon comme étant un pointeur sur le type Coordonnees.

Or dans la ligne de code ci-dessus, tu essayes d'y affecter le contenu de la struct à droite du signe = et non pas le pointeur sur cette struct.

Donc il suffisait, à mon sens, de faire :

Polygon.Coordonnees = &Coordonnees; /* plus d'erreur */


(non testé)

Dal
0