我想知道为什么我在使用模板类时遇到这些错误。我收到错误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
}
}
};
答案 0 :(得分:0)
在进行以下更改后,您的代码(在MSVC上)编译正常:
enter code here
在template<class T>
构造函数的声明前删除forwardList
:
public:
forwardList() {}
forwardList(T var)
{ ...