Memberfunktionen von volatile Klassen



  • Moin

    Ich verzweifle an dem Versuch, einen Member einer volatile Klasse aufzurufen:

    error: passing "volatile Bar" as "this" argument of "virtual volatile int Bar::foo()" discards qualifiers
    

    Was kann ich tun? Im Internet finde ich leider praktisch nichts zu volatile und mein C++ Buch ist leider aktuell verliehen ...


  • Mod

    code? die nicht-statische Memberfunktion muss selbst volatile (oder const volatile) sein. Generell würde ich damit aber vorsichtig umgehen, die Semantik von volatile in Verbindung mit Klassen ist unterspezifiziert.



  • Jop die Memberfunktion ist bereits volatile:

    virtual volatile int Bar::foo()

    Der tatsächliche Code ist eher umfangreich, daher kann ich das nicht posten ich habe mal ein Minimalbeispiel gemacht:

    volatile.C

    class Test
    {
            public:
                    volatile void test();
    };
    
    int main()
    {
            volatile Test test;
            test.test();
    }
    
    $ g++ volatile.C
    volatile.C: In function "int main()":
    volatile.C:10: error: passing "volatile Test" as "this" argument of "volatile void Test::test()" discards qualifiers
    

  • Mod

    darthdespotism schrieb:

    Jop die Memberfunktion ist bereits volatile:

    virtual volatile int Bar::foo()

    Der tatsächliche Code ist eher umfangreich, daher kann ich das nicht posten ich habe mal ein Minimalbeispiel gemacht:

    volatile.C

    class Test
    {
            public:
                    volatile void test();
    };
    
    int main()
    {
            volatile Test test;
            test.test();
    }
    
    $ g++ volatile.C
    volatile.C: In function "int main()":
    volatile.C:10: error: passing "volatile Test" as "this" argument of "volatile void Test::test()" discards qualifiers
    

    dein volatile modifiziert den Rückgabetyp (und ist bedeutungslos), nicht die Funktion.

    class Test
    {
            public:
                    void test() volatile;
    };
    

    ganz analog zu const-Memberfunktionen.



  • OK danke 🙂

    Mal sehen wie weit ich komme oder ob ich mir doch eine andere Lösung ausdenken muss 😉



  • Nur aus Interesse an der Sache: Wofür brauchst du die volatile-Instanz denn?


Anmelden zum Antworten