#include #include using namespace std; class BuggyStringStackNode { public: BuggyStringStackNode(const string& str, BuggyStringStackNode* next) : val_(str), next_(next) { } const string& val() { return val_; } BuggyStringStackNode* next() { return next_; } private: const string val_; BuggyStringStackNode* next_; }; class BuggyStringStack { public: void Push(const string& str) { BuggyStringStackNode* new_node = new BuggyStringStackNode(str, head_); head_ = new_node; } const string& Pop() { BuggyStringStackNode* popped = head_; head_ = head_->next(); return popped->val(); } private: BuggyStringStackNode* head_; }; // This main() method is only for you to try the code; once you've implemented // the unit tests, you should either comment it out or change it to invoke the // tests as described in the documentation. int main(int argc, char** argv) { BuggyStringStack stack; stack.Push("Hello\n"); stack.Push("World\n"); cout << stack.Pop(); cout << stack.Pop(); }