C++ 错误:绑定到类型discards限定符的引用
我很抱歉,我知道以前有人问过这个问题,但即使我试着阅读类似问题的所有其他答案,我也无法理解我的错误。 我使用伊柯丽斯,我在C++编程,我正在尝试用模板制作链接列表。 我使用的节点类对我的链表很有用,我有以下函数规范:C++ 错误:绑定到类型discards限定符的引用,c++,eclipse,binding,linked-list,C++,Eclipse,Binding,Linked List,我很抱歉,我知道以前有人问过这个问题,但即使我试着阅读类似问题的所有其他答案,我也无法理解我的错误。 我使用伊柯丽斯,我在C++编程,我正在尝试用模板制作链接列表。 我使用的节点类对我的链表很有用,我有以下函数规范: template <class item> void list_insert(node<item>*& head, const item&e); 好的。我想使用此函数,以便在我的列表类中可以使用此函数: template <class
template <class item>
void list_insert(node<item>*& head, const item&e);
好的。我想使用此函数,以便在我的列表类中可以使用此函数:
template <class item>
class list{
public:
list(){head=NULL;}
void set_head(node<item>*h){head=h;}
node<item>*& get_head(){return head;}
const node<item>* get_head()const{return head;}
bool empty()const{return head==NULL;} // is the list empty?
void insert(const item&e){list_insert(head,e);} //ERROR GETS HERE!
void print(); // print the list clockwise
void printback(); //print it counterclockwise
private:
node<item>* head;
};
我这样做是为了实现如下列表插入:
template <class item>
void list_insert(node<item>*& head, const item& e){
head= new node<item>(e,head);
}
现在,在最后一段代码中,我得到了以下错误:
错误:将“const int”绑定到“int&”类型的引用会丢弃限定符
我已经读到,基本上编译器告诉我ehi,如果你这样做,你想要的常量条件将被违反,所以我给你一个错误,好吧,但我仍然不理解实际的错误,或者,无论如何,它背后的原因是什么
也因为我应该做一个逆时针的插入函数,但实际上我在顺时针方向有问题,所以我被卡住了
事先非常感谢你
编辑:很抱歉,我没有提供我正在做的事情的实际例子。
基本上,我正在尝试制作一个链表——简单而基本的考试
我的链表基本上是由节点组成的堆栈。节点是我的列表的组成部分,由数据部分和到下一个节点部分的链接组成:
template <class item>
class node{
public:
//CONSTRUCTOR
nodo(item & d=item(), nodo*l=NULL){
data=d;
link=l;
}
//GET E SET METHODS
void set_data(item& d){data=d;}
void set_link(node*l){link=l;}
item& get_data(){return data;}
const item& get_data()const{return data;}
node*& get_link(){return link;}
const node* get_link()const{return link;}
private:
item data;
node* link;
};
现在,如前所述,我的列表由节点组成,在私有部分,我声明了一个指向列表头部的指针
node<item>* head;
这就是这段代码的例子——然后问题就发生了,就像我以前写的那样 在节点的构造函数中,您应该按常量引用传递项,并且节点类中存在一些输入错误,可能是复制+粘贴错误
错误信息非常清楚。问题是什么?请参阅节点构造函数的声明。问题是我在main中使用as,但对于我使用的每一种数据类型,函数始终存在const声明的绑定问题。正如编译器所说,这是一个绑定问题,但我无法理解它,因为我实际上是通过推理来放置变量的。在我的列表插入函数的实现中不断出现错误。请提供MCVE。节点是什么啊,对不起,我的错。我把帖子删掉了。更好吗?ohmygoditworked。是的,对不起,打字错误是因为复制+粘贴错误,我很抱歉,但它确实起作用了。我实际上没有考虑构造函数,老实说,我只是痴迷于函数的实现。这就是为什么我意识到构造器有一些问题的原因,我很抱歉。无论如何,非常感谢你的帮助!
class node{
public:
//CONSTRUCTOR
node(item const & d=item(), node*l=0)
: data(d), link(l) // prefer initializer list here
{ }
//...