g++ でコンパイルしようとすると、以下のエラーが発生します
if(nmFunctions && nmFunctions->updateAddressResponseHandler)
エラー: 'operator&&' に一致しません</p>
g++ でコンパイルしようとすると、以下のエラーが発生します
if(nmFunctions && nmFunctions->updateAddressResponseHandler)
エラー: 'operator&&' に一致しません</p>
問題は、オブジェクトを暗黙的にブール値にキャストできないか、演算子nmFunctions
の処理方法がわからないことです。&&
その場合、明示的にキャストする必要があり->
ます- 。shared_ptr
bool
(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()
あります。そうしないと、コンパイルされません。
私の推測では、それupdateAddressResponseHandler
は関数であり、それを呼び出して戻り値を確認したいと考えています。その場合、次のように呼び出す必要があります。
if(nmFunctions && nmFunctions->updateAddressResponseHandler())
// ^^
そうでない場合は、 の定義を投稿し、それでupdateAddressResponseHandler
何をしようとしているのかを説明してください。