gpt4 book ai didi

c++ - 错误 C2440 : '=' : cannot convert from 'ListNode *' to 'ListNode *'

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:22 32 4
gpt4 key购买 nike

我正在尝试创建一个双向链表,但出现此错误:

error C2440: '=' : cannot convert from 'ListNode<T> *' to 'ListNode<T> *'

我真的不知道为什么。有人可以帮助我吗?

template <class T>
class ListNode
{
private:
//Données membres
T m_Value;
ListNode<T> *m_Next;
ListNode<T> *m_Prev;
public:
//Constructeur
ListNode()
{
m_Value = NULL;
m_Next = NULL;
m_Prev = NULL;
}

ListNode<T>(T _Value)
{
m_Value = _Value;
m_Next = NULL;
m_Prev = NULL;
}

//Accesseurs
T getValue() const
{ return m_Value; }

void setValue(T _Value)
{ m_Value = _Value; }

ListNode<T>* getNext() const
{ return m_Next; }

void setNext(ListNode *_NextNode)
{ m_Next = _NextNode; }

ListNode<T>* getPrev() const
{ return m_Prev; }

void setPrev(ListNode *_PrevNode)
{ m_Prev = _PrevNode; }
};

template <class T>
class List
{
private:
//Données membres
int m_Compte;
ListNode<T> *m_Current;
ListNode<T> *m_Head;
ListNode<T> *m_Last;

...

这里是导致错误的函数

template <class T>
void operator+=(T _newValue)
{
Where the error is

这条线路有问题。我正在尝试创建一个新节点并影响当前节点,该节点是指向 ListNode 的指针

    m_Current = new ListNode<T>(_newValue);

if (!m_Head)
{
m_Head = m_Current;
}
else
{
m_Last->setNext(m_Current);
m_Current->setPrev(m_Last);
m_Last = m_Current;
}
++m_Compte;
return;
}

最佳答案

template <class T>  // <------ 'T'
class List
{
...
template <class T> // <------- 'T' again ?
void operator+=(T _newValue);
};

似乎,T对于 List 阴影 T对于 operator += .您可以使用 typename U对于 operator +=并试一试。
另外,您确定要为 operator += 使用新类型吗? ?或者您打算使用与 List<T> 相同的类型吗? .

旁注,operator += 的典型语法是:

List& operator += (const List &copy)
{
...
return *this;
}

关于c++ - 错误 C2440 : '=' : cannot convert from 'ListNode<T> *' to 'ListNode<T> *' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9678120/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com