1

考虑以下类定义......

节点

    template <class T> class Node {
        private :
            T* data;
            Node<T>* next;
        public :
            Node(T* data);
            void setData(T* data);
            T* getData();
            void setNext(Node<T>* next);
            Node<T>* getNext();
    };

链表

    template <class T> class LinkedList {
        private :
            Node<T>* start;
        public :
            LinkedList();
            void add(Node<T>* node);
            bool isEmpty();
    };

主要的

    #include "Foo.h"
    int main() {
        Foo foo();
        Node<Foo> node(&foo);
        LinkedList<Foo> linkedList();
        linkedList.add(&node);
        return 0;
    }

编译时会抛出以下错误...

    Request for member 'add' in 'linkedList', which is of non-class type 'LinkedList<Foo>()'

我对使用模板非常缺乏经验,因此将不胜感激。

4

1 回答 1

0

Foo foo();并且LinkedList<Foo> linkedList();不是变量,而是函数原型。

请使用Foo foo;andLinkedList<Foo> linkedList;代替。

您还可以使用Foo foo = Foo();andLinkedList<Foo> linkedList = LinkedList<Foo>();来明确调用构造函数。

于 2015-09-18T04:43:46.080 回答