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 に答える