PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Noob Frage zum Aufruf von Funktionen


Mond
2010-12-11, 19:51:39
Moin,

folgendermassen sieht mein Code aus:


namespace {
funcA()
funcB()
funcC()
}

funcX()


Also ist nach aussen nur meine funcX Funktion aufrufbar, wobei funcX() in Abhaengigkeit von der Eingabe entsprechend funcA, funcB oder funcC aufruft.

Jetzt moechte ich innerhalb von funcB() die Funktion funcC() aufrufen, bekomme beim Kompilieren allerdings immer

ERROR: funcC() was not declared in this scope.

Was mache ich falsch?
Wie kann ich das aendern?
Warum ist das so?

Vielen Dank schonmal fuer eure Hilfe. :)

NACHTRAG:
Ich habe in meiner .hpp Datei nur die funcX angeben. Darin wird es wahrscheinlich liegen oder?

Trap
2010-12-11, 20:08:16
Welcher Code ist in welcher Datei? Da solche Fragen zur Namensgültigkeit in C++ auf Dateiebene entschieden werden, musst du das genau beschreiben, damit man dir helfen kann.

Grundsätzlich kann man in nur Sachen aufrufen, die vor dem Aufruf im Code vorkommen (über #include oder direkt in der Datei). funcB kann also funcC nur aufrufen wenn vor funcB eine Deklaration für funcC im Code vorkommt.

Mond
2010-12-11, 20:20:56
Danke fuer die Antwort,

das habe ich mir auch so gedacht, dass es nicht geht weil funcC() zu dem Zeitpunkt noch nicht deklariert ist.

Letztendlich geht es nur um eine cpp und hpp Datei. Der ganze Code steckt in der .cpp Datei, in der .hpp habe ich lediglich die Funktion funcX angegeben, die nach aussen ja sichtbar sein soll. Ist das so verstaendlich?

Ansonsten, hast du ne Idee wie ich das problem loesen kann?

Gruss,
Martin

Trap
2010-12-11, 20:42:01
Die Antwort hast du doch eigentlich schon gegeben:
das habe ich mir auch so gedacht, dass es nicht geht weil funcC() zu dem Zeitpunkt noch nicht deklariert ist.
Einfach in der .cpp am Anfang vom Namespace eine Deklaration für funcC() hinzufügen.

Mond
2010-12-11, 21:15:45
Die Antwort hast du doch eigentlich schon gegeben:

Einfach in der .cpp am Anfang vom Namespace eine Deklaration für funcC() hinzufügen.

Danke! Funktioniert :)