Grundlagenfehler "Elementfunktion ... kann nicht ohne..."
-
Ich hab in einer probe.h mir eine Funktion deklariert:
class Probe { void probefunktion(void); void anderefunktion(void); };Und dann in meiner probe.cpp einfach die Funktion aufgerufen und in einer anderen Funktion wieder aufgerufen:
[code="cpp"]void Probe::probefunktion(void)
{
}void Probe::anderefunktion(void)
{
probefunktion();
}Und dabei kommt aber der Fehler "Elemenfunktion probefunktion() kann nicht ohne Objekt aufgerufen werden.
-
Da fehlen die Grundlagen. Weißt du denn, was eine
-Klasse
-Instanz
-Member
-Memberfunktion
ist? Versucht das mal zu klären, dann verstehst du die Fehlermeldung auch.
-
Eigentlich sollte das aber funktionieren, out. Der gezeigte Code ist absolut in Ordnung.
Ich vermute daher, dass der hier gezeigte Quellcode nicht dem tatsächlichen Code entspricht. Siehe dritter Link in meiner Signatur.
-
Das war nur ein Beispiel für mein Problem, die includes und alles hab ich weggelassen auch.
Habe mein Problem grad gefunden, war ein Rechtschreibfehler in der Headerdatei
Aber allgemeine Fragen hab ich trotzdem, wenn ich zum Beispiel in einer anderen CPP Datei eine Funktion hab und diese will ich in meiner probe.cpp datei verwenden, wie realisiere ich das? Einfach die cpp datei includieren und dann die Funktion verwenden geht ja nicht.
-
DanielZ schrieb:
Habe mein Problem grad gefunden, war ein Rechtschreibfehler in der Headerdatei


DanielZ schrieb:
wenn ich zum Beispiel in einer anderen CPP Datei eine Funktion hab und diese will ich in meiner probe.cpp datei verwenden, wie realisiere ich das?
Naja, lässt sich so Pauschal nicht sagen. Ist es z.B. eine freie Funktion, dann deklarierst du sie in einer freie_funktion.hpp und inkludierst diese dann. Ansonsten willst du vielleicht eine has-a Beziehung?
-
Aber allgemeine Fragen hab ich trotzdem, wenn ich zum Beispiel in einer anderen CPP Datei eine Funktion hab und diese will ich in meiner probe.cpp datei verwenden, wie realisiere ich das? Einfach die cpp datei includieren und dann die Funktion verwenden geht ja nicht.
cpp-Dateien includest du nie*. Genau dazu sind Header da. Schreib einen Header mit einer Deklaration der Funktion, binde ihn ein, fertig. Das reicht dem Compiler zur Übersetzung des Quelltextes. Der Linker setzt ganz am Ende die fertig übersetzten Module zu einem ganzen Programm zusammen.
*: Oder nur in ganz speziellen Ausnahmen, die irgendein Forenklugscheißer mir als angeblich furchtbar wichtig unter die Nase reiben würde, wenn ich diesen kleinen Disclaimer nicht schreiben würde
.
-
Aber ich hab jetzt meine probe.cpp und dann hab ich noch ums mal genau aufn Punkt zu bringen, diese beiden, also die kbhit.cpp und die kbhit.h noch von hier -> www.linux-sxs.org/programming/kbhit.html
Und einfach die kbhit.h in meine probe.cpp einzubinden und dort in einer Funktion die kbhit() Funktion aufzurufen funktioniert nicht. Ich muss bestimmt noch die kbhit funktion irgendwie in meine probe.h einbinden, aber wie?

-
http://www.c-plusplus.net/forum/200753
Code, Vorgehensweise, erwartetes Verhalten, tatsächliches Verhalten, genaue Fehlermeldungen.
Bitte an keiner Stelle der Beschreibung "funktioniert nicht" benutzen.
-
Ok ich bin ein Trottel

Problem gelöst, ich hab einfach nur in meiner main.cpp ganz oben den Header includiert, also die kbhit.h und dann musste ich nur vor jede Funktion noch den Klassennamen schreiben. Jetzt lern ich das wenigstens gleich, bin noch ziemlich am ende vom Anfängerkurs in C++.