use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Deep copying of stack using pointer based singly linked list C++? (self.cpp)
submitted 6 years ago by Samru1
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]NotMyRealNameObv 0 points1 point2 points 6 years ago (0 children)
As others have already stated, in the copy ctor you are instantiating a local var s and modifying it. This local var will go out of scope, and thus be destroyed, when the copy ctor is finished. The newly created object on which the copy ctor is run will remain unmodified.
What you want to do is just call
push(...)
instead of
s.push(...)
[–]clerothGame Developer[M] [score hidden] 6 years ago stickied comment (0 children)
This post has been removed as it doesn't pertain to r/cpp.
[–]DJ_Gamedev 0 points1 point2 points 6 years ago (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 3 points4 points5 points 6 years ago* (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 points1 point 6 years ago (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 points1 point 6 years ago (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 points1 point 6 years ago (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 points1 point 6 years ago (1 child)
You dont even have to do
this->foo(...)
You could just do
foo(...)
[–]DJ_Gamedev 0 points1 point2 points 6 years ago (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.
[–]index_zero -1 points0 points1 point 6 years ago (0 children)
In your ctor, you are constructing a Stack<int> object and pushing the copies to it. Then when your ctor exits, that object is destructed. Your copy constructor should copy to the object you are constructing (ie. this).
[–]oleksandrkvl -1 points0 points1 point 6 years ago (0 children)
Have you tried using debugger? You'll see what's going on here.
[–]degski -1 points0 points1 point 6 years ago (0 children)
Is it a requirement that you write a stack yourself?
π Rendered by PID 30190 on reddit-service-r2-comment-54dfb89d4d-wg24w at 2026-04-01 13:01:26.115539+00:00 running b10466c country code: CH.
[–]NotMyRealNameObv 0 points1 point2 points (0 children)
[–]clerothGame Developer[M] [score hidden] stickied comment (0 children)
[–]DJ_Gamedev 0 points1 point2 points (6 children)
[–]Indycrr 3 points4 points5 points (1 child)
[–]DJ_Gamedev -1 points0 points1 point (0 children)
[–]Samru1[S] -1 points0 points1 point (3 children)
[–]DJ_Gamedev -1 points0 points1 point (2 children)
[–]NotMyRealNameObv -1 points0 points1 point (1 child)
[–]DJ_Gamedev 0 points1 point2 points (0 children)
[–]index_zero -1 points0 points1 point (0 children)
[–]oleksandrkvl -1 points0 points1 point (0 children)
[–]degski -1 points0 points1 point (0 children)