illegal call of non-static member function?? warum kommt diese fehlermeldun??



  • ich rufe eine öffentliche memberfunktion auf, die einen integer-wert zurückgibt und bekomme jedes mal diese fehlermeldung:

    illegal call of non-static member function
    

    egal was ich mache!!
    der funktion wird ein zeiger und ein integer wert übergeben:

    Instanz::Funktion(&string, integer);
    

    deklariert ist die funktion ungefär so:

    int CKlasse::Funktion (string *pstring, int einezahl)
    {
       if(zahl<counter)//der counter zählt, wie viele werte stringarray hat!
       {
           *pstring=stringarray[einezahl];
           return 0;
       }
       else 
           return 1;
    }
    

    warum kommt diese fehlermeldung??



  • Des Problems Lösung steht doch schon in der Fehlermeldung.
    Setze ein static vor das int und gut is.



  • Du brauchst erstmal nen Objekt von deiner Klasse, über diesen rufst du dann deine Funktion auf :

    CKlasse meinObjekt;
    
    meinObjekt.Funktion( ... );
    


  • Das ist völliger Quatsch, wenn man eine Methode in einer Klasse als static markiert, kann man sie auch ohne ein Objekt aufrufen.



  • static schrieb:

    ...wenn man eine Methode in einer Klasse als static markiert, kann man sie auch ohne ein Objekt aufrufen.

    Diese Aussage ist zwar in sich nicht falsch, aber hier im Zusammenhang schon, weil der OP offensichtlich auf eine Instanz vonj CKlasse zugreifen will (zahl, counter, stringarray) .... und das geht natürlich nicht über static Memberfunktionen.

    Ergo: Selber Quatsch (und zwar zweimal). :p 😉

    Gruß,

    Simon2.



  • äh ich hab ein objekt erstellt nur das hab ich da falsch gemacht moment ich änders ma


Anmelden zum Antworten