I have recently discovered that when I have pointers within a class, I need to specify a Copy constructor.
To learn that, I have made the following simple code. It compiles, but gives me runtime error when performing the copy constructor.
I am trying to copy just the value from the pointer of the copied object, but avoiding assigning the same address.
So, what's wrong here?
    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;
    }
I'll be using this concept for other classes with lots of pointers in it, where I need to copy all values from on object to the other. Copying is initially necessary for this code, so I would like to keep the copying possibility (I won't be hiding the copy constructor as private).
Besides, the real class I need to implement has like 10 pointers, and it might be changing with time. Isn't there a somewhat smarter way to have a deep copy constructor in C++?...
 
     
     
     
     
     
     
     
     
     
     
    