Я работаю со связанным списком, в частности, я пытаюсь добавить объект.В функцию добавления передается указатель на объект, который я хочу добавить.
Этот указатель затем используется при инициализации объекта OULink (узла списка).
Внутри моего класса OULink я пытаюсь установить указатель данных на = объект, который я пытаюсьдобавить, и вот где я получаю сообщение об ошибке:
ошибка: неправильное преобразование из 'const NvraRecord *' в 'NvraRecord *' [-fpermissive] this-> data = item;
Я думал, так как они оба были типа T *, я мог назначить одно другому.
template <typename T>
class OULinkedList {
template <typename F>
friend class OULinkedListEnumerator;
private:
Comparator<T>* comparator = NULL; // used to determine list order and item equality
unsigned long size = 0; // actual number of items currently in list
OULink<T>* first = NULL; // pointer to first link in list
OULink<T>* last = NULL; // pointer to last link in list
public:
OULinkedList(Comparator<T>* comparator); // creates empty linked list with comparator
virtual ~OULinkedList(); // deletes all links and
template <typename T>
bool OULinkedList<T>::append(const T* item) {
if(this->first == NULL){
OULink<NvraRecord> currentNode(item);
this->first = ¤tNode;
}else{
}
std::cout << *this->first->data << std::endl;
return false;
}
template <typename T>
class OULink {
template <typename F>
friend class OULinkedList;
template <typename F>
friend class OULinkedListEnumerator;
private:
T* data = NULL; // pointer to data item of any type
OULink* next = NULL; // pointer to next link
public:
OULink(const T* item);
virtual ~OULink();
};
template<typename T>
OULink<T>::~OULink(){
}
// Implementation goes here
template<typename T>
OULink<T>::OULink(const T* item){
this->data = item;
}