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 !