Bonjour a tous !
Alors voilà, j'ai un petit probleme de pointeurs sur classes derivées qui disparaissent des la sortie de leur espace de construction.
-------------- .h
class Mere{
public : virtual int GetId(){ return -1; }
};
class Fille : public Mere {
public : virtual int GetId(){ return 5; }
};
class Interface{
public : void Action();
/** est appelée lors d'un evenement utilisateur */ Mere* pointeur;
};
------------- .cpp
Interface::Interface(){
pointeur = new Fille();
pointeur->GetId()
// Fonctionne};
Interface::Action(){
pointeur->GetId()
// Segmentation Fault};
En gros, j'ai une classe Mere, et une classe Fille derivée de Mere. Je cree un objet Fille, que je veut pouvoir utiliser durant tout le programme, j'en stocke donc l'adresse. Mais je ne veut pas avoir a connaitre a l'avance l'existence de cet objet Fille, donc je stocke un poinetur de type (Mere*).
Le probleme, c'est que des que je sort de l'espace ou cet objet a été créé, mon pointeur semble ne plus etre valide.
J'ai tenté de stocker ce pointeur avec Boost, avec wxWidget, avec les conteneurs standars, des tableaux et autres. Rien n'y fait. J'ai beau tenter d'approfondir les mecanismes de l'heritage, je n'arrive pas a comprendre pourquoi mon pointeur devient invalide. Mon objet Mere derive lui-meme d'un objet wxWidget, qui lui semble toujours valide alors meme que mon pointeur ne l'est plus.
Si vous pouviez m'indiquer ce que je fait de travers, ou bien un mecanisme important que je n'ai peut etre pas bien compris, ce serais tres sympa^^
Merci d'avance.