KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: C++ Klassen
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich habe gerade wieder an einem Homebrew gearbeitet und habe folgendes Problem.
Bei C++ ist es ohne Klassen so, dass man nur Funktionen aufrufen kann, die vor dieser Funktion deklariert wurden. Nur ist das Problem, dass Funktionen sich gegenseitig benutzen, da müssten dann Klassen her, damit das geht. Das habe ich getan, aber leider kann ich keine Variablen von außerhalb in der Klasse benutzen. Dann bekomme ich immer "xx wurde in diesem Gültigkeitsbereich nicht definiert". Und wenn ich die Variable neu definiere, bekomme ich auch ein Fehler, weil ich die neu definieren darf. Das verwirrt mich gerade ein wenig. Leider geht es auch nicht so einfach mit "public static" wie in Java.

http://code.google.com/p/evil-monkey-psp/source/browse/mc2djnr/main.h

(Der meiste Code ist schon ein Jahr alt und da habe ich noch unsauberer programmiert Big Grin).
Du kannst mit

Code:
//includes

//Hier kannst du Prototypen der Funktionen anlegen,
//so ist die Definitionsreihenfolge egal und die Funktionen können sich gegenseitig aufrufen
void func1();
void func2();

int main()
{
//CODE
}

void func1()
{
func2();
}
void func2()
{
func1();
}

dein Problem lösen und das in "reinem" C.
Du sagst dem Compiler, dass es diese Funktionen gibt.
Hoffe, das du es verstehen kannst. Wink

mfg D3lta

P.S.: Der obige Code ist nicht zu empfehlen Wink
(Endlos-Rekursion ftw)

Aso, dafür sind die Deklarationen davor da. Könnte man so machen ^^
Mit Klassen ist es glaube ich übersichtlicher und besser. Aber wieso kann ich den Struct, der genau vor der Klasse definiert ist, nicht benutzen?
Ist die struct global definiert?
Wenn sie lokal definiert ist, geht es garantiert nicht.
Programmierst du gerade auf PC oder PSP?
Außerdem würde ich nicht mitten in einem C-Programm Klassen verwenden, ist aber eine Stilfrage. Smile

mfg D3lta
Egal, ich bau es dann einfach mal wieder in reinem C um.

Edit: Es geht jetzt, dank den Prototypen Big Grin Danke.
Referenz-URLs