Übergabe von "const foo()" streicht Qualifizierer? statisch?



  • Hallo,

    ich bin am verzweifeln. Ich habe in einer KLasse einen template member auf dessen methoden ich zugreifen will. AUs irgendeinem grund bekomme ich die Meldung :

    Die Übergabe von »const MyClass<MyType>« als »this«-Argument von »int MyClass<MyType>::foo() [with T = MyType]« streicht Qualifizierer
    

    Mache ich den member zu einem pointer und lege ihn über new auf dem heap an geht es. Aber als statischer member geht es nicht???

    Im Grund IN Pseudocode sieht das so aus:

    //in einer klasse:
    template<class T> MyClass2::MyClass2() { comm = MyClass<T>();}
    
    template <class T> void MyClass2::bar()
    {
          comm.foo();
    }
    

    und die MyClass foo()

    template <class T> class MyClass
    {
          public:
               void foo();
    };
    
    template <class T> void MyClass<T>::foo()
    {
    }
    


  • Ich bin mir sicher dass dein Pseudocode nicht stimmt, poste den richtigen!!!
    Denn wahrscheinlich ist
    😉 MyClass2::bar() const-qualifiziert (ändert das Objekt nicht)
    😉 MyClass::foo() hingegen nicht const-qualifiziert, und damit ein Verändern eines Objektes erlauben würde.

    Lösung:
    Wenn das geht mach MyClass::foo() auch const.



  • Ah danke....ja das wars 🙂



  • Wobei ich mich grad frage, wieviel deutlicher man die originale Fehlermeldung des Compilers noch machen könnte, ohne anzufangen Bilder zu malen.


Anmelden zum Antworten