C++ 如何从双链接列表中获取节点内部的有效负载
C++ 如何从双链接列表中获取节点内部的有效负载,c++,class,nested,C++,Class,Nested,Temp1属于Node*类型。因此,您应该调用Temp1->Data()而不是Temp1.Data()哇,我觉得自己很傻。我以前也犯过这个错误。谢谢你指给我看。什么是->调用?连同timrau下面的答案,您可能想要将const T Data()const更改为const T&Data()const。 template<class T> class CRevList { public: //...constructor, destructor, etc; class Node //
Temp1
属于Node*
类型。因此,您应该调用Temp1->Data()
而不是Temp1.Data()
哇,我觉得自己很傻。我以前也犯过这个错误。谢谢你指给我看。什么是->调用?连同timrau下面的答案,您可能想要将const T Data()const
更改为const T&Data()const
。
template<class T> class CRevList
{
public:
//...constructor, destructor, etc;
class Node //nested class
{
public:
friend class CRevList;
Node() {m_next = 0; m_prev = 0;}
Node(const T &t) {m_payload = t; m_next = 0; m_prev = 0;}
T Data() {return m_payload;}
const T Data() const {return m_payload;}
private:
Node *m_next;
Node *m_prev;
T m_payload;
};
private: //for original class
Node *m_head, *m_tail; // Head node
unsigned size;
};
error: request for member 'Data' in 'Temp1', which is of non-class type 'CRevList<int>::Node*'
//Find a node with the specified key
const Node *Find(const T &t) const { }
Node *Find(const T &t) {
Node * Temp1 = m_head;
while(m_tail != Temp1){
if(Temp1.Data() == t){
return Temp1;
}
Temp1 = Temp1->m_next;
}
}