我的c ++项目中有一个字符串类。我必须使用双链表并创建自己的字符串类。在我的字符串类中,我必须重载<
,>
和==
运算符。其实我这样做了。但在我的另一个类中,我有一个列表函数,用于比较我的字符串类。在这个比较中,我有“采取暂时性的错误地址”。
这是我的字符串类:
#include "String.h"
String::String(int coming)
{
x=coming;
}
int String::getX()
{
return x;
}
String String::operator==(String *taken)
{
return String (x==taken->x);
}
这是我的列表方法:
void myclass::list(String *taken)
{
otherclass *temp=head;
while(temp!=NULL)
{
if(&temp->get_string()==taken)//where i get error message.
cout<<temp<<endl;
temp=temp->get_nextnode();
}
}
答案 0 :(得分:4)
编译器正在告诉您确切的问题:您无法获取临时对象的地址。 temp->get_string()
是一个临时对象 1 ,您正试图获取其地址。
我不确定你的目标是什么,所以我不能建议修复。但我强烈建议将String::operator==
定义为将指针作为右侧将导致混淆。让它返回另一个String
也没什么意义;通常会期望==
评估为布尔值。
<小时/> <子> 1。好吧,大概是。您尚未显示
get_string()
。 的声明