Pointerproblem
-
Hallo.
Ich komme hier nicht weiter. Ich bin wohl ein bisschen reingerostet, nachdem ich lange Zeit kein C++ mehr programmiert habe.
Ich habe einen Konstruktor, an dem ich die int und char** der main-Methode übergeben will. Bisher habe ich das so versucht:
extern Gui gui; int main(int argc, char** args) { gui(argc, args); gui.start(); }Und in der Klasse:
Gui::Gui(int argc, char** args) { glutInit(argc, args); }g++ spuckt da folgende Fehlermeldung aus:
nov.cpp: In function
int main(int, char**)': nov.cpp:13: error: no match for call to(Gui) (int&, char**&)'Ich hab schon alles mögliche ausprobiert, aber ich kriege es einfach nicht hin. Ich hoffe, es kann mir irgendwer eben sagen, wie es geht.
Danke im Voraus.
Konstantin
-
Der Konstruktor der globalen Variablen muß irgendwo global eingebaut werden (bei der Deklartion), ist für dich also nicht verwendbar - an der Stelle erwartet der Compiler bestenfalls einen GUI::operator(), den er aufrufen will.
Die beste Lösung wäre es da, den ganzen Code aus dem Konstruktor in eine Init()-Methode zu verlagern:
class Gui { bool is_ok; public: Gui():is_ok(false){} GUI(int c,char**v):is_ok(true) { glutInit(c,v); } void Init(int c,char**v) { glutInit(c,v); is_ok=true; } //... } extern Gui gui; int main(int argc,char**argv) { gui.Init(argc,argv); gui.Start(); }Alternativ kannst du die Gui auch als lokale Variable in main() anlegen.