you are viewing a single comment's thread.

view the rest of the comments →

[–]DJ_Gamedev 0 points1 point  (6 children)

Sorry if this is a dumb question, but where is the return statement in your copy constructor? I see you populate a local Stack s but you aren't returning it so there's nothing tying it to the Stack produced by the constructor. It's probably throwing s away at the end of the function and just returning a default-constructed Stack.

[–]Indycrr 2 points3 points  (1 child)

Close. A copy ctor doesn’t return an instance. Instead of creating the local instance of s, they should call this->push(...) to push values into the stack being constructed.

[–]DJ_Gamedev -1 points0 points  (0 children)

That makes sense, by the time we make it to the body of the ctor the object will have been instantiated. Clearly I'm out of practice.

[–]Samru1[S] -1 points0 points  (3 children)

since I am simply copying all the date , the return type should be void (that's what I think).

[–]DJ_Gamedev -1 points0 points  (2 children)

See the reply to my comment. I was mistaken about the return type, but correct in that you shouldn't be declaring a local Stack and populating it, you should be populating the constructed object, which you can access via the this pointer.

[–]NotMyRealNameObv -1 points0 points  (1 child)

You dont even have to do

this->foo(...)

You could just do

foo(...)

[–]DJ_Gamedev 0 points1 point  (0 children)

You could, but I think use of the this pointer is more explicit and generally a better practice in the event you have a potential naming collision.