Bonjour,
l'exécution du make nous affiche plusieurs erreurs dans le même fichier, chaque fois nous avons des undefined reference pour des attributs static, y aurait-il une syntaxe particulière à suivre pour la création d'un getter de static ?
Bonjour,
l'exécution du make nous affiche plusieurs erreurs dans le même fichier, chaque fois nous avons des undefined reference pour des attributs static, y aurait-il une syntaxe particulière à suivre pour la création d'un getter de static ?
le message "undefined reference" est produit à l'étape d'édition de liens pour assembler tous les modules compilés en un seul exécutable.
il provient en général de fautes de frappe sur le nom d'un attribut/fonction/méthode utilisée dans un autre module que celui où cet attribut/ fonction/méthode est définie.
c'est la première chose à vérifier
La seconde chose importante est qu'un attribut static est limité à la portée de la classe: seules les méthodes de la classe peuvent s'en servir.
troisième point: pourquoi vouloir faire un getter de l'attribut static ? ça ressemble à un controunement d'encapsulation...
L'idée serait de garder les id des nœuds dans un tableau, pour permettre une gestion plus simple des erreurs dans le fichier nœud directement
C'est une mauvaise chose ?
Salut Joel, les attributs statiques doivent être initialisés en dehors de la classe avant d'être utilisés. Le livre Introduction a la programmation orienté objet en C++ montre un exemple à la page 24. Voici un autre exemple de ma part qui compile :
#include <iostream>
using namespace std;
class Rectangle {
int width, height;
public:
static int test;
void set_values (int,int);
int area() {return width*height;}
int get_test();
};
int Rectangle::test{1};
void Rectangle::set_values (int x, int y) {
width = x;
height = y;
}
int Rectangle::get_test(){
return test;
}
int main () {
Rectangle rect;
rect.set_values (3,4);
cout << rect.get_test();
return 0;
}
Merci beaucoup c'était ça le problème !