[英]Why am I getting "invalid conversion from const pointer to pointer?
我正在處理一個鏈表,特別是我試圖附加一個對象。 將附加函數傳遞給我要添加的對象的指針。
然后,此指針用於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;
}
OULink
構造函數采用const T* item
,它是指向const T的指針OULink.data
可以存儲T*
,它是指向非const T的指針。
您不能將const T*
分配給T*
,因為const
是一個約定,上面寫着“我不會讓我指向的對象更改”。 如果可以分配給T*
,則該指針將允許修改該對象,這將破壞該合同。
您可能想要更改構造函數OULink(const T* item);
到OULink(T* item);
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.