gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:33 25 4
gpt4 key购买 nike

我正在做一项不允许使用任何 STL 容器的家庭作业。我对 LinkedList 的实现是用指针链接在一起的节点集合。我有另一个名为 ContinuousList 的类,它有一个数据成员 LinkedList,其节点包含指向其他各种 LinkedList 中的节点的指针。我正在尝试将一个函数的返回值分配给一个变量,该变量返回一个指向节点的指针,该变量也是一个指向节点的指针,但它说这是无效的,我不明白为什么我不能这样做那个。

template <typename ValueType>
struct Node
{
Node();
std::string m_key;
ValueType m_value;
Node<ValueType>* m_next;
};

链表类:

template <typename ValueType>
class LinkedList
{
public:
Node<ValueType>* begin()
{
return m_head;
}
private:
Node<ValueType>* m_head;
};

连续列表:

template <typename ValueType>
class ContinuousList
{
public:
ValueType* iterate(std::string& key)
{
m_curr = m_collection.begin(); // Error occurs here

...
}
private:
LinkedList<Node<ValueType>*> m_collection;
Node<ValueType>* m_curr;
};

完整的错误信息

1>          error C2440: '=' : cannot convert from 'Node<ValueType> *' to 'Node<ValueType> *'
1> with
1> [
1> ValueType=Node<bool> *
1> ]
1> and
1> [
1> ValueType=bool
1> ]
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1> while compiling class template member function 'bool *ContinuousList<ValueType>::iterate(std::string &)'
1> with
1> [
1> ValueType=bool
1> ]
1> see reference to class template instantiation 'ContinuousList<ValueType>' being compiled
1> with
1> [
1> ValueType=bool
1> ]

最佳答案

    LinkedList<Node<ValueType>*> m_collection;

这个

让 m_head 成为

      Node<Node<ValueType>*>*

这不是你想要的。

    m_curr = m_collection.begin()
Node<ValueType> = Node<Node<ValueType>*>*

如果

    Node<Node<ValueType>*>* 

是你想要的,使用

m_collection.begin()->m_value;

或使用

    LinkedList<ValueType>, 

它会返回节点

虽然我可能真的很累.... =D

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

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