RAD Studio 10 clang: Fehler bei class template mit __property mit Funktion als read-Eigenschaft



  • Hallo,

    ich habe hier folgenden Code:

    #pragma hdrstop
    #pragma argsused
    
    template<typename T>
    struct TestClass
    {
       __property double Value = { read=get_value };
    
       double get_value() const
       {
          return 4.5;
       }
    };
    
    int main(int argc, char* argv[])
    {
       TestClass<int> tc;
       return 0;
    }
    

    wird mit dieser Fehlermeldung quittiert:

    bcc32c schrieb:

    [CLANG Fehler] main.cpp(7): kein passender Funktionsaufruf für 'get_value'
    main.cpp(17): in Instantiierung der Template-Klasse 'TestClass<int>' hier angefordert

    Dieser Fehler tritt in der Form nur auf, wenn es sich um ein Klassentemplate handelt, bei normalen Klassen gibt´s keine Probleme:

    #pragma hdrstop
    #pragma argsused
    
    struct TestClass
    {
       __property double Value = { read=get_value };
    
       double get_value() const
       {
          return 4.5;
       }
    };
    
    int main(int argc, char* argv[])
    {
       TestClass tc;
       return 0;
    }
    

    läuft durch. Der Fehler verschwindet, wenn ich die Funktions vor das __property verschiebe, aber ich möchte nicht alle privaten/protected Funktionen vor den public Properties stehen haben. Gibt´s da nen Trick oder ist das einfach verbuggt?



  • Ja, könnte ein Compilerfehler sein.
    Probiere mal

    __property double Value = { read=this->get_value };
    

    oder aber nur die Deklaration vorher:

    struct TestClass
    {
    private:
       double get_value() const;
    public:
       __property double Value = { read=get_value };
    
    private:
       // ...
    }
    

Log in to reply