Copier le constructeur avec des pointeurs

J'ai récemment découvert que quand j'ai des pointeurs à l'intérieur d'une classe, j'ai besoin de spécifier un constructeur de Copie.

De l'apprendre, j'ai fait le code simple suivant. Il compile, mais me donne l'erreur d'exécution lors de l'exécution du constructeur de copie.

Je suis en train de copier la valeur du pointeur de l'objet copié, mais en évitant l'attribution de la même adresse.

Alors, quel est le problème ici?

    class TRY{
        public:
        TRY();
    ~TRY();
        TRY(TRY const &);

        int *pointer;

        void setPointer(int);
    };


    void TRY::setPointer(int a){
        *pointer = a;

        return;
    }


    TRY::TRY(){}


    TRY::~TRY(){}


    TRY::TRY(TRY const & copyTRY){
        int a = *copyTRY.pointer;
        *pointer = a;
    }



    int main(){

        TRY a;
        a.setPointer(5);

        TRY b = a;

        b.setPointer(8);

        cout << "Address of object a = " << &a << endl;
        cout << "Address of object b = " << &b << endl;

        cout << "Address of a.pointer = " << a.pointer << endl;
        cout << "Address of b.pointer = " << b.pointer << endl;

        cout << "Value in a.pointer = " << *a.pointer << endl;
        cout << "Value in b.pointer = " << *b.pointer << endl;

        return 0;
    }

Je vais utiliser ce concept pour les autres classes avec beaucoup de pointeurs en elle, où j'ai besoin de copier toutes les valeurs de l'objet à l'autre. La copie est d'abord nécessaire pour ce code, je tiens à garder la copie de possibilité (je ne vais pas cacher le constructeur de copie privée").

D'ailleurs, la vraie classe j'ai besoin de mettre en œuvre, comme les 10 pointeurs, et il pourrait être en train de changer avec le temps. N'est-il pas un peu plus intelligent moyen d'avoir une copie en profondeur constructeur en C++?...

source d'informationauteur Biga | 2009-04-23