2012-03-23 6 views
0

私は所有者から車を入れ替える方法を作成しました。メンバー 'mCar' for 'this'の非クラス型 'owner * const'へのリクエスト

bool owner::changeCar(owner& other, car& mCar){ 
    if(this == &other) return false; 
    car* m = &this.mCar; 
    this->mCar =&mCar; 
    other.mCar = m; 
    return true; 
} 

は、しかし、私はライン上の非クラスタイプ '所有者* constの'

であるの 'MCAR' 'この'、エラーにメンバーの

リクエストを受け取りますcar* m = &this.mCar;

誰かが間違っていることを知っています。 クラスオーナーには専用車があります。

答えて

1

以下の行に正しく入力しました。 thisはポインタなので、そのメンバーmCarにアクセスするには->が必要です。さらに、mCarは既に明らかに既にポインタである(少なくともあなたは1つとして使用している)ので、冗長になる前に&となる。あなたがthis.mCarを書く1行で、次のthis->mCar

car* m = this->mCar; 
+0

ありがとう、解決済み..私は完全に忘れてしまった。 – Lefsler

+0

これを追加するだけで、この前に&を削除する必要があります。mCarはすでにポインタです.. so ..たくさんありがとうございます – Lefsler

0

。間違っているように見えますか?この場合、thisownerへのポインタであり、タイプownerのオブジェクトまたは参照ではないため、2番目のバージョンは正しいです。あなたのコードがコンパイルされません

1

理由はthisポインタ、ない参照であるということです。したがって、.演算子の代わりに->演算子を使用する必要があります。

+0

可能であれば標準ライブラリを使用するのは良い考えですが、この場合は全く違うものを達成したいと思うので、うまくいかないでしょう。私はそれを誰が投票したのだろうかと思っているが(しかし、最初の段落はもちろん正しい) –

+0

@ChristianRauなぜでしょうか? OPは彼が所有者から車を交換しようとしていると言っているので、 'std :: swap'の呼び出しはそのトリックを行うべきではありませんか? – dasblinkenlight

+0

彼はサードパーティーを使ってそれらを入れ替えようとしています。ちょうど 'owner.mCar = this-> mCar; this-> mCar = &mCar; '。私は 'std :: swap'やあなたの他の選択肢がそれを達成するかどうかは確かではありません。 –

関連する問題