Héritage - erreur de segmentation
Bonjour,
le code suivant compile, mais à l'exécution j'ai une erreur de segmentation... et je comprends vraiment pas pourquoi.
Code:
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 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#include <iostream>
#include <string>
class Voiture
{
public:
Voiture () {}
virtual ~Voiture () {}
virtual std::string getMarque () {}
};
class Porsche : public Voiture
{
public:
Porsche () {}
~Porsche () {}
std::string getMarque () {return "Porsche";}
};
class VoitureConteneur
{
public:
VoitureConteneur () {voit = Voiture();}
VoitureConteneur (Voiture _voit) {voit = _voit;}
~VoitureConteneur () {}
Voiture getVoiture () const {return voit;}
void setVoiture (Voiture _voit) {voit = _voit;}
private:
Voiture voit;
};
class Donner2Voitures
{
public:
static VoitureConteneur * getVoitures ()
{
Porsche * p1 = new Porsche();
Porsche * p2 = new Porsche();
VoitureConteneur * toReturn = new VoitureConteneur[2];
toReturn[0].setVoiture(*p1);
toReturn[1].setVoiture(*p2);
delete p1;
delete p2; // avec ou sans les delete c'est pareil
return toReturn;
}
};
int main ()
{
VoitureConteneur * mesVoitures = Donner2Voitures::getVoitures();
std::string marque = (mesVoitures[0].getVoiture()).getMarque(); // ligne foireuse
return 0;
} |
Merci d'avance