Clang:将引用绑定到 'const TClass' 类型的值会删除限定符

Clang: Binding of reference to a value of type 'const TClass' drops qualifiers

我有以下方法,可以使用 "classic" bcc32 编译器编译,但无法使用 Rad Studio 10 Clang 编译器编译。

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

编译器产生以下错误:

[CLANG Error] Service_REST_Server_OlU.cpp(37): binding of reference to type 'TPersistentClass' (aka 'System::TMetaClass *') to a value of type 'const TClass' (aka 'System::TMetaClass *const') drops qualifiers

如果我理解正确,基于 ,这不起作用的原因是代码试图 return 对 const 对象的非 const 引用。但是,我在语法上不确定如何解决这个问题。有没有办法在方法定义中指出我想要 return a const?

如果你想return一个常量引用你必须声明它。

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