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.


Anmelden zum Antworten