У меня есть следующий метод, который прекрасно компилируется с использованием «классического» компилятора 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’) удаляется классификаторы
Если я правильно понимаю, основываясь на этот вопрос, причина, по которой это не работает, заключается в том, что код пытается вернуть неконстантную ссылку на константный объект. Тем не менее, я не уверен синтаксически, как я решаю эту проблему. Есть ли способ указать в определении метода, что я хочу вернуть const
?
Если вы хотите вернуть постоянную ссылку, вы должны объявить ее.
const TPersistentClass & __fastcall TService_REST_Server_Ol::OnServerMethods()
{
return __classid(TServerMethods_RSO);
}