模板类指针问题c ++

时间:2017-10-31 01:06:25

标签: c++

我想知道为什么我在使用模板类时遇到这些错误。我收到错误C2440'='无法从'node<T> *'转换为'node<T> *'。这看起来很奇怪,因为它们的类型完全相同。

    template<class T>
    struct node
    {        
        T value;
        node<T> *next = nullptr;
        node()
        {
            this->next = nullptr;
        }

        node(T t)
        {
            this->value = t;
            this->next = nullptr;
        }

        node(T t, node<T> *nextpointer)
        {
            this->value = t;
            this->next = nextpointer;
        }

        ~node()
        {

        }
    };

    template<class T> class forwardList
    {
    private:
        node<T> *head;
    public:
        template<class T> forwardList() {}
        template<class T> forwardList(T var)
        {
            if (head == nullptr)
            {
                node<T> *firstNode = new node<T>(var);
                this->head->next = firstNode; //Here it doesn't work for me
            }
        }
    };

1 个答案:

答案 0 :(得分:0)

在进行以下更改后,您的代码(在MSVC上)编译正常:

  • 移除顶部附近的enter code here
  • template<class T>构造函数的声明前删除forwardList

    public:
        forwardList() {}
        forwardList(T var)
        { ...