Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        6年前关闭。
                                                                                            
                
        
我正在尝试学习和实现类,并遇到了实现嵌套类的问题。我已经实现了它的一个版本。我想问一下您是否认为这是嵌套类的一个好例子?我们如何在不嵌套这些类的情况下实现相同的目的?

#include<iostream>

class Stack {
    class Node {
        public:
            int data;
            Node* next;
            Node(int data, Node* next);
            ~Node();
    }* head;
    public:
        Stack();
        Stack(const Stack& s);
        void operator=(const Stack& s);
        ~Stack();
        void push(int data);
        int peek() const;
        int pop();
};

最佳答案

我想问一下您是否认为这是一个很好的课堂设计?


不,因为您不需要链表来实现堆栈,因为您不会引发异常,因为您没有使用现有的解决方案(例如std::stackstd::vectorstd::deque),而且因为您的课程是不遵守rule of three

template<typename Val> class Stack{
protected:
    typedef std::vector<Val> Data;
    Data data;
public:
    const Val& top() const{
        if (!data.size())
            throw std::underflow_error();
        return data[data.size()-1];
    }
    void push(const Val& arg){
        data.push_back(arg);
    }
    Val pop(){
        Val result = top();
        data.pop_back();
        return result;
    }
};



  实现嵌套类的问题。


对于“嵌套课程练习”的链表更合适。


  我应该怎么做?我应该如何处理?


编写尽可能少,重用现有解决方案,并保持简单。


  有书籍吗?


应该有关于设计模式的书,但是对于他们来说可能还为时过早。我建议保持练习一段时间,最好使用您感兴趣的实际问题。

10-04 22:23
查看更多