KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
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++?...
Tags (comma-separated)
Save Edits
Cancel