0

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

1 回答 1

4

编译器准确地告诉您问题:您不能获取临时对象的地址。 temp->get_string()是一个临时对象1,您正在尝试获取它的地址。

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


1. 嗯,大概。您还没有显示get_string().

于 2012-05-19T19:06:50.787 回答