嘿我基本上试图用它的元素打印出相应的节点。但我得到一个错误:Error 1 error C2440: 'return' : cannot convert from 'DoublyLinkedListNode<Datatype> *' to 'int &'
我已经尝试了一些改变索引函数返回类型的东西,但到目前为止我没有喜悦。
任何人都可以帮我解决这个问题吗?
这是我的代码:
//-------------------------------------------------------------------------------------------
// Name: Print.
// Description: Prints the elements from the list along with its index.
//-------------------------------------------------------------------------------------------
void Print(DoublyLinkedList<int>& p_list)
{
//Set up a new Iterator.
DoublyLinkedListIterator<int> itr = getIterator();
for(itr.Start(); itr.Valid(); itr.Forth())
{
cout <<"Index: "<<itr.Index() << "Element: " << itr.Item() << "\n";
}
cout << endl;
}
//-------------------------------------------------------------------------------------------
// Class: DoublyLinkedIterator.
//-------------------------------------------------------------------------------------------
template <class Datatype>
class DoublyLinkedListIterator
{
public:
//-------------------------------------------------------------------------------------------
// Member Vairables.
//-------------------------------------------------------------------------------------------
DoublyLinkedListNode<Datatype>* m_node;
DoublyLinkedList<Datatype>* m_list;
DoublyLinkedListIterator(DoublyLinkedList<Datatype>* p_list= 0, DoublyLinkedListNode<Datatype>* p_node= 0)
{
m_list= p_list;
m_node= p_node;
}
// ------------------------------------------------------------------
// Name: Start
// Description: Resets the iterator to the beginning of the list.
// Arguments: None.
// Return Value: None.
// ------------------------------------------------------------------
void Start()
{
if(m_list!= 0)
m_node= m_list -> m_head;
}
// ----------------------------------------------------------------
// Name: End
// Description: Resets the iterator to the end of the list
// Arguments: None.
// Return Value: None.
// ----------------------------------------------------------------
void End()
{
if(m_list!= 0)
m_node = m_list->m_tail;
}
// ----------------------------------------------------------------
// Name: Forth
// Description: Moves the iterator forward by one position
// Arguments: None.
// Return Value: None.
// ----------------------------------------------------------------
void Forth()
{
if(m_node!= 0)
m_node= m_node->m_next;
}
// ----------------------------------------------------------------
// Name: Back
// Description: Moves the iterator backward by one position.
// Arguments: None.
// Return Value: None.
// ----------------------------------------------------------------
void Back()
{
if(m_node!= 0)
m_node = m_node->m_prev;
}
// ----------------------------------------------------------------
// Name: Item
// Description: Gets the item that the iterator is pointing to.
// Arguments: None.
// Return Value: Reference to the data in the node.
// ----------------------------------------------------------------
Datatype& Item()
{
return m_node->m_data;
}
// ----------------------------------------------------------------
// Name: Index
// Description: Gets the index that the iterator is pointing to.
// Arguments: None.
// Return Value: Reference to the data in the node.
// ----------------------------------------------------------------
Datatype& Index()
{
return m_node;
}
// ----------------------------------------------------------------
// Name: Valid
// Description: Determines if the node is valid.
// Arguments: None.
// Return Value: true if valid
// ----------------------------------------------------------------
bool Valid()
{
return (m_node!= 0);
}
答案 0 :(得分:0)
基本上我试图使用m_node作为索引,我被告知不是这样做的,并且在print方法的for循环中增加一个变量。这工作正常 这是代码:
void Print(DoublyLinkedList<int>& p_list)
{
int index = 0;
//Set up a new Iterator.
DoublyLinkedListIterator<int> itr = getIterator();
for(itr.Start(); itr.Valid(); itr.Forth())
{
index++;
cout <<"Index: "<< index << "Element: " << itr.Item() << "\n";
}
cout <<"Number of Elements in the List: " << m_count << endl;
}