Bonjour,

J'ai une erreur très étrange que je n'avais jamais rencontré lors d'un autre TP C++; je définis un objet term du type Term (c'est un terme d'un polynome à plusieurs variables X1...Xn):

Term term();

Puis j'essaye d'appeler une méthode sur cet objet (en l'occurrence l'ajout d'un entier à un vecteur d'entiers):

term.addElt(56);

Et j'obtiens à la compilation le message très explicite suivant:

request for member `addElt' in `term()', which is of non-aggregate type `Term ()()'

Ceci dit, je ne vois pas comment résoudre l'erreur :-/

Code du header "Term.h":

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
35
36
37
38
39
40
41
42
43
44
45
46
47
 
 
#ifndef _Term
#define _Term
 
#include <cstdlib>
/*#include "gmpxx.h"  **** j'utiliserai cette classe lorsque le reste sera débuggé.. **** */
#include <vector>
 
/* typedef mpz_class Gen; // type du coefficient */
typedef int Gen;
 
typedef std::vector<int> Indet; // type des puissances des indeterminees
 
class Term {
 
public:
 
      // constructeurs: initialisation éventuelle des attributs
      Term::Term();
 
      // prend un tableau d'entiers en paramètre, que l'on transforme en vecteur
      Term::Term(Gen coeff, int* tab_indet, int size); // size est la taille du tableau
 
      // ajoute un élément en fin du vecteur
      void Term::addElt(int var);
 
      // transformation d'un terme en son opposé
      Term Term::operator-();
 
      // accès et modification des paramètres
      int Term::operator[](int p);
 
      // acces au coefficient
      Gen& Term::getCoeff(); 
 
      // destructeur
      Term::~Term();
 
private:
 
      Gen coeff;
      Indet indet;
 
};
 
#endif
Code de la méthode addElt dans Term.cpp:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
// ajoute un élément en fin du vecteur
      Term::addElt(int var) {
            indet.push_back(var);
      }
Et au cas où, mon main:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
#include "Term.h"
#include <iostream>
using namespace std;
 
int main(int argc, char **argv) {
Term term();
term.addElt(56);
cout << term[0];
}
Merci d'avance,
Benjamin