如何使数据成员在一个类中继承,但在另一个类中不继承

问题描述 投票:0回答:1

我正在用 C++ 制作一个抽象链表

其中有一个这样的节点:

template <typename T>
class LL{
    protected:
        enum {MAX = 512};
        class Node{
            protected: 
                Node* next;
                Node* prev;
            public:
                const T& data;
                Node(){}
                ...
        };
...
};

现在我想从这个抽象类创建一个仅获取下一个指针的单链表和一个获取两者的双向链表 我怎样才能实现这个目标?

我尝试制作节点:

class Node{
    protected: 
        Node* next;
    public:
        const T& data;
        Node(){}
    ...
};

然后在双向链表中创建了一个 BiNode,它继承自 Node 并具有 prev 指针,但这创建了一个新类并使所有返回 Node 的函数无效

c++ oop inheritance data-structures
1个回答
0
投票

用于处理这种复杂性的方法称为“模板专业化”。 该代码使用 LL 类模板以及附加的布尔模板选项 DoublyLinked 来确定链接列表是单链接还是双向链接。它使用 std::conditional_t 根据此布尔值有条件地选择节点类型。可以分别使用 LL 和 LL 为单链表或双向链表创建 LL 实例。这种设计有助于两种类型的链表的代码重用,而不需要单独的类。VISUAL STUDIO CODE

© www.soinside.com 2019 - 2024. All rights reserved.