IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

non aggregate type


Sujet :

C++

  1. #1
    Membre confirm� Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Luxembourg

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Par d�faut non aggregate type
    salut � tous !

    au risque de passer pour le noeud que je suis en C+, j'ai une erreur persistante disant :
    main.cpp:12: error: request for member `getValeur' in `e1()', which is of non-aggregate type `element ()()'
    je suis sur que cela est une erreur courante de debutant mais voila google m'a appris deja la diff�rence entre aggregate (type simple) et non aggregate (complex) mais voila encore faut til savoir ce que mon compilateur n'aime pas � la ligne 12... c'est un exo sur des listes chain�es.

    voici les entetes
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #ifndef ELEMENT_H
    #define ELEMENT_H
     
    #include <iostream>
    #define null 0
    using namespace std;
    typedef int X;
     
    class element{
        /*cette classe definit ce qu'est un element d'ensemble generique*/
     
        //propriété de la classe (private)
        X valeur;
        element* suivant; //pointeur sur element suivant
     
        public:
        //methode de la classe
            //constructeurs
     
            element(); 
            element(const X &val); 
            element(const X &val, element* ad); 
     
            //methodes membres    
            X getValeur()const;     
            element* getSuivant()const;    
            void setValeur(const X &val);   
            void setSuivant(element* suivant);   
    }; //fin de la classe element   
     
    //definition des methodes non membre de la classe element 
    void Detruire(element* &primelt);
    #endif
    et le corp du constructeur en question (ligne 12) cad le constructeur a vide:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
            element::element(){
     
                valeur = 1;
                suivant = null; 
            }
    c'est d'autant plus etonnant qu'il accepte mes deux autres constrructeurs sans pb.

    le code d'appel (main est)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    int main(int argc, char *argv[])
    {
      element e1();
      cout << "definition de e1 sans parametre\r\n";
      cout << "la valeur de e1 est " << e1.getValeur() << " et il pointe vers " << e1.getSuivant() << "\r\n";
    tout simplement, ben non ca veut pas !!

    vous n'auriez as une id�e

    merci et pardon pour les longueurs

    WDionysos !

  2. #2
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651

  3. #3
    Membre confirm� Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Luxembourg

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Par d�faut
    ???

    d'accord j'ai compris ce point mais que dois je faire pour instancier un element je dois utiliser new comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    element e1 = new element()
    je croyais justement qu'en c a l'instar de java new n'etait pas necessaire pour ces objets et dans ce cas pourquoi il accepte mes deux autre constructeur (e2 avec 1 param et e3 avec 2 param)

    ca dois etre con mais je bute !

    WD

    EDIT::
    ok ca marche comme tu me dis sans () mais je voudrais comprendre pourquoi il accepte
    et pas
    ca fait brouillon non ?

    /EDIT::

  4. #4
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    element e2(8);
    ne peut pas corespondre � la d�claration d'une fonction puisque qu'un param�tres est pass�.

    element e();
    par contre la �a peut effectivement corespondre � une d�claration de fonction.

  5. #5
    Membre confirm� Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Luxembourg

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Par d�faut
    voila merci a vous j'ai compris,

    mais tout de meme loin de remettre en cause le talent de ceux qui ont ecris mon compilateur, je trouve quand meme cela dommage et pas tr�s logique pour une question de netet� et de lisibilit� du code, il auraient du pr�voir un mecanisme par exemple si le type de retour et le meme nom de la classe alors c'est un constructeur de cette classe et non une fonction

    enfin, je vais pas r�inventer la roue..



    Merci a tous

    WD !

    r�solu !!!

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par d�faut
    Tiens, tiens! Expatri� aussi?
    Mais Lothringen (=Lorraine) n'est pas, ou plus exactement n'est plus, en pays teuton!!!????

  7. #7
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Citation Envoy� par wdionysos
    mais tout de meme loin de remettre en cause le talent de ceux qui ont ecris mon compilateur, je trouve quand meme cela dommage et pas tr�s logique pour une question de netet� et de lisibilit� du code, il auraient du pr�voir un mecanisme par exemple si le type de retour et le meme nom de la classe alors c'est un constructeur de cette classe et non une fonction
    Par d�faut, s'il y a ambigu�t�, c'est une d�clarationd e fonction, c'est dans le standard. En effet, comment peut-il faire la diff�rence entre un type pour d�clarer une variable et un type de retour d'une fonction ?

  8. #8
    Membre confirm� Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Luxembourg

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Par d�faut
    Citation Envoy� par Charlemagne
    Tiens, tiens! Expatri� aussi?
    Mais Lothringen (=Lorraine) n'est pas, ou plus exactement n'est plus, en pays teuton!!!????
    le savais tu: Clovis, le premier roi des franc parlait le francique qui est bien plus ancien que l'allemand moderne, le francique c'est le dialecte que nous pouvons trouver dans mes contr�e.

    donc Clovis �tait Teuton, decidement la teutonisation depasse bien les fronti�res

    vive l'europe !



    WD!

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par d�faut
    Enfin, ta localisation �tait un peu impr�cise. Et j'avais compris "Teuton" au sens p�joratif du terme, pas au sens "vieille Germanie"
    A priori donc, t'es du nord-est de la Lorraine...
    Mais pourquoi tant de myst�res...

  10. #10
    Membre confirm� Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Luxembourg

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Par d�faut
    gagn�

    dio!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 09/09/2009, 11h28
  2. conversion to non-scalar type requested
    Par jbarreau-mainson dans le forum C
    R�ponses: 15
    Dernier message: 03/04/2009, 12h58
  3. Probl�me:Erreur 'which is of non-class type
    Par abzal dans le forum D�buter
    R�ponses: 9
    Dernier message: 28/11/2008, 15h54
  4. Erreur 'which is of non-class type' ?
    Par jahmanzaar dans le forum D�buter
    R�ponses: 7
    Dernier message: 15/10/2008, 22h53
  5. [OBJET] - non-aggregate type error
    Par jacquesh dans le forum C++
    R�ponses: 3
    Dernier message: 28/04/2006, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo