0

「クラシック」bcc32コンパイラを使用して正常にコンパイルする次の方法がありますが、Rad Studio 10 Clangコンパイラを使用してコンパイルに失敗します。

TPersistentClass & __fastcall TService_REST_Server_Ol::OnServerMethods()
{
    return __classid(TServerMethods_RSO);
}

コンパイラは次のエラーを生成します。

[CLANG エラー] Service_REST_Server_OlU.cpp(37): タイプ 'TPersistentClass' (別名 'System::TMetaClass *') への参照をタイプ 'const TClass' (別名 'System::TMetaClass *const') の値にバインドするとドロップします修飾子

this questionに基づいて正しく理解できれば、これが機能しない理由は、コードが const オブジェクトへの非 const 参照を返そうとしているためです。ただし、この問題を解決する方法が構文的にわかりません。を返したいことをメソッド定義で示す方法はありconstますか?

4

1 に答える 1

2

const 参照を返したい場合は、それを宣言する必要があります。

const TPersistentClass & __fastcall TService_REST_Server_Ol::OnServerMethods()
{
    return __classid(TServerMethods_RSO);
}
于 2015-09-03T19:03:26.680 に答える