使用重载运算符时获取临时错误的地址

时间:2012-05-19 19:03:21

标签: c++ overloading temporary

我的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();
    }
}

1 个答案:

答案 0 :(得分:4)

编译器正在告诉您确切的问题:您无法获取临时对象的地址。 temp->get_string()是一个临时对象 1 ,您正试图获取其地址。

我不确定你的目标是什么,所以我不能建议修复。但我强烈建议将String::operator==定义为将指针作为右侧将导致混淆。让它返回另一个String也没什么意义;通常会期望==评估为布尔值。

<小时/> <子> 1。好吧,大概是。您尚未显示get_string()

的声明