【问题标题】:proxy class constructor access代理类构造函数访问
【发布时间】:2017-07-30 15:58:38
【问题描述】:

我开始的一个 c++ 项目遇到了一些麻烦。我正在尝试实现基本链表,并且我的尝试在列表类中包含代理类以表示单个节点。其中一个列表构造函数可以获得单个参数并用它初始化列表的第一个节点,但我不能将该参数传递给代理类的构造函数。有什么建议吗?

这是一些 c++ 代码

template <class TYPE>
class list{
private:
    //Proxy class for node representation
    class node{
    private:
        node* next;
        TYPE data;
    public:
        explicit node() : next(nullptr) {}
        node (const TYPE& init) : data(init) {}
        inline node*& get_next(){
            return next;
        }
        inline TYPE& get_data(){
            return data;
        }
    };

    node* head;
    unsigned int size;
    public:
        explicit list() : head(nullptr), size(0) {}

        list(const TYPE& init) : list::node(init) {}

【问题讨论】:

  • 似乎您决定使用list::node 语法,因为您将基类初始化与成员初始化混淆了。在这种情况下,head 只是list 的成员,您应该使用成员初始化语法。类是否在list 中声明并不重要。

标签: c++ proxy-pattern


【解决方案1】:

嗯,你应该引用node 的实例而不是类本身。另外,请记住 head 在您的示例中是一个指针。

试试这样的:

list(const TYPE &init) : head(new node(init)) {}

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2010-09-26
    • 2017-04-07
    • 2011-02-24
    • 2018-06-23
    • 2023-04-02
    • 2012-06-20
    • 2021-09-08
    • 2014-09-07
    相关资源
    最近更新 更多