-1

g++ でコンパイルしようとすると、以下のエラーが発生します

if(nmFunctions && nmFunctions->updateAddressResponseHandler)

エラー: 'operator&&' に一致しません</p>

4

2 に答える 2

0

問題は、オブジェクトを暗黙的にブール値にキャストできないか、演算子nmFunctionsの処理方法がわからないことです。&&

その場合、明示的にキャストする必要があり->ます- 。shared_ptrbool(bool)nmFunctions && ...

のクラスがnmFunctions以下の関数のいずれかを持っていた場合、それで問題が解決するはずであることに注意してください。shared_ptr明示的なキャストを強制する別のバージョンを使用します。

最初の方法が好まれる理由は明らかです。

// allow for "(bool)nmFunctions" or implicit casting
operator bool() { return someBoolean; }

// allow for "nmFunctions && (boolean)"
bool operator&&(bool b) { return b && someBoolean; }

また、updateAddressResponseHandler関数名のように聞こえます。そうである場合は、に変更する必要がupdateAddressResponseHandler()あります。そうしないと、コンパイルされません。

于 2013-02-21T07:20:20.983 に答える
0

私の推測では、それupdateAddressResponseHandlerは関数であり、それを呼び出して戻り値を確認したいと考えています。その場合、次のように呼び出す必要があります。

if(nmFunctions && nmFunctions->updateAddressResponseHandler())
//                                                         ^^

そうでない場合は、 の定義を投稿し、それでupdateAddressResponseHandler何をしようとしているのかを説明してください。

于 2013-02-21T07:40:34.887 に答える