我有節點*電流在那裏我存儲一個指針在列表的「頂部」當前哪個節點。當我設置一個新的節點作爲目前我得到的錯誤:「=」:無法從「CircularDoubleDirectedList <int> ::節點*」轉換爲「節點*」
'=' : cannot convert from 'CircularDoubleDirectedList<int>::Node *' to 'Node *'
while compiling class template member function 'void CircularDoubleDirectedList<int>::addAtCurrent(const T &)' with [ T=int ]
它是三排//產生這些錯誤的問題發表評論,如果把他們帶走一切工作正常。
#include "ICircularDoubleDirectedList.h"
template <typename T> class CircularDoubleDirectedList;
class Node;
template <typename T>
class CircularDoubleDirectedList :
public ICircularDoubleDirectedList<T>{
public:
//Variables
Node* current;
int nrOfElements;
direction currentDirection;
//Functions
CircularDoubleDirectedList();
~CircularDoubleDirectedList();
void addAtCurrent(const T& element) override;
private:
class Node
{
public:
T data;
Node* forward;
Node* backward;
Node(const T& element);
};
};
template <typename T>
void CircularDoubleDirectedList<T>::addAtCurrent(const T& element){
Node* newNode = new Node(element);
newNode->data = element;
if (this->nrOfElements == 0){
newNode->forward = newNode;
newNode->backward = newNode;
}
else{
this->current->forward = newNode; // Problem
this->current->forward->backward = newNode; // Problem
}
this->current = newNode; //Problem
}
你不需要你在使用它之前宣佈的私人'Node'類公共界面?你確定首先要把'current'作爲一個公共成員變量嗎?事實上,所有的成員變量都應該是私人的,不是嗎?有人使用類擺弄物品的數量,或設置'current'到節點在不同的列表,或...否則濫用你的模板類你不想。 –
我哈德宣佈它,我只是錯過了我的代碼的頂部。是的,他們肯定他們應該是私人的。我只想讓這個工作擺在首位。 – Olof
您的代碼有一些微不足道的錯誤(如Node的向前聲明),修正當編譯代碼。請參閱[演示](http://ideone.com/qmRCEN) – Abhijit