a nonstatic member reference must be relative to a specific object
-
Hi,
wie kann man von einer Klasse aus auf eine öffentliche Funktion oder Variable zugreifen?? Bekomme momentan immer die Fehlermeldung "a nonstatic member reference must be relative to a specific object"
Anbei ein kleines (nicht vollständiges) Beispiel welches die Problematik zeigt.
Ich arbeite mit der MFC - allerdings glaube ich dass dies ein allgemeines C++-Problem darstellt; daher mein Post in diesem Forum.
/* classA.h ********************* */ class A : public CWinApp { public void testfunktion(void); }; /* classB.h **************************/ class B: public CFormView { .... } /* classB.cpp ********************/ functionB() { classA::testfunktion(); // <- Fehlermeldung }
Gruß
Konrad
-
du möchtest also eine statische funktion haben? (also du brauchst keinerlei instanz-spezifische daten innerhalb der funktion?)
bb
-
testFunktion() ist keine statische Methode. Du brauchst also ein Objekt.
classA myA;
myA.testFunktion();
-
Du brauchst noch zur Methode ein Objekt.
-
Konrad Bauer schrieb:
wie kann man von einer Klasse aus auf eine öffentliche Funktion oder Variable zugreifen
Dies entspricht dem nachfolgenden Code aber nicht wirklich
Hier mal 2 Beispiele, um aus einer öffentlichen Funktion heraus auf die Klasse zuzugreifen
class A { public: void testfunktion() {}; }; void functionB(A &a) { a.testfunktion(); }
Oder mit einer Statischen Funktion
class A { public: static void testfunktion() {}; }; void functionB() { A::testfunktion(); }
Beim letzten Beispiel macht des mit static Sinn, wenn du in deiner Klasse noch nichtstatische Elemente hast. Für rein-Statische Klassen sollte man dann eher namespaces nehmen