1

我有一个这样的链表结构:

template<class T>
class LinkedList {
private:

    template<class U>
    struct Node {
        U data;
        Node<U> *link;
    };

    Node<T> *head;
};

我最理想的做法是将内部类定义与 的声明合并head,如下所示:

// Is something like this possible?
template<class U>
struct Node {
    U data;
    Node<U> *link;
} head; // Put head right here somehow, while also specifying the type parameter.

因为创建Node<U>结构的重点是定义head. 有没有可能将这两者结合在一起?

4

3 回答 3

2

只需保留占位符T并删除不必要的U

template<class T>
class LinkedList {
private:

    struct Node {
        T data;
        Node *link;
    };

    Node *head;
};
于 2013-10-15T15:13:26.733 回答
1

无论出于何种原因,您都可以将它们连接在一起。您只需要删除多余的template<class U>.

template<class T>
class LinkedList {
private:
    struct Node {
        T data;
        Node* link;
    }* head;
};
于 2013-10-15T15:13:04.687 回答
1

我更喜欢您的第一个示例,但您不需要像那里那样的两个模板参数。

template<class T>
class LinkedList {
private:
    struct Node {
        T data;
        Node *link;
    };

    Node *head;
};

我认为这比你的第二个例子干净得多。例如,您现在可以在您的类上编写searchinsert函数。LinkedList对于您的另一个示例,它们必须是外部功能。

于 2013-10-15T15:13:22.060 回答