vendredi 8 février 2019

How to fix 'Segmentation fault (core dumped)' when trying to implement Factory Pattern

I'm trying to implement the factory pattern in my code.

I tried to create an object "Koerper schienbein" and initialized it with

schienbein.setRadius(0.2);
schienbein.setLaenge(1.0);
schienbein.setPosition(0, 0, 1.0);
schienbein.erzeugeBody(world); 

Therefore I'm assuming that there is no error within the class "Koerper".

This is my code for my factories.

Koerperfabrik.h:

class Koerperfabrik {

public:
    Koerper *erzeugeKoerperteil(dWorldID welt);

protected:
    virtual Koerper *erzeugeKoerper(dWorldID welt) { };

};

Koerperfabrik.cpp:

Koerper *Koerperfabrik::erzeugeKoerperteil(dWorldID welt) {
    Koerper *koerper = new Koerper ();
    koerper = erzeugeKoerper(welt);

    return koerper;
}

Schienbeinfabrik.cpp:

Koerper *Schienbeinfabrik :: erzeugeKoerper(dWorldID welt) {
    Koerper* schienbein = new Koerper ();
    (*schienbein).setRadius(0.2);
    (*schienbein).setLaenge(1.0);
    (*schienbein).setPosition(0, 0, 1.0);
    (*schienbein).erzeugeBody(welt);

    return schienbein;
}

Simulation.cpp:

void erzeugeFussundSchienbein() {
    Koerperfabrik schienbeinfabrik = Schienbeinfabrik ();
    schienbein = schienbeinfabrik.erzeugeKoerperteil(world);
}

When I try to access (*schienbein).getBody() I get the error "Speicherzugriffsfehler (Speicherabzug geschrieben)" which translates to "Segmentation fault (core dumped)".

I hope there is somebody who can help me.

Aucun commentaire:

Enregistrer un commentaire