Zugriff auf int argc, char * argv[] vor main

Dieses Thema im Forum "C/C++" wurde erstellt von franksa, 01.02.2005.

  1. #1 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi All,
    Ich habe eine Frage und bitte Euch um Hilfe. Ich moechte auf die Argumente von main zugreifen:

    class d {
    publc:
    d();
    ~d();
    };

    d::d()
    {
    cerr << "argc:" << argc << endl;
    }
    d::~d()
    {
    }

    d st;

    main ( int argc, char *argv[] )
    {
    }

    Ich habe nicht einmal eine Idea unter welchem Stichwort ich da suchen muesste. Wo kann ich dazu eine Beschreibung finden.
    Vielen Dank und viele Gruesse, Frank
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Naja. Du muesstest vielleicht erstmal ein Objekt erstellen, die Argumente argc und argv uebrgeben und dann koenntest du darueber nachdenken die beiden dann vorhandenen Variablen ihrem Typ entsprechend auszugeben.
     
  4. #3 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi, erstmal Danke fuer Deine Antwort.
    Aber genau das ist es, ich muss vor dem Aufruf von main schon auf argc/argv zugreifen. Kann also nach main nichts mehr tun.
    Gruss, Frank
     
  5. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Naja. Was haellst du denn davon das Objekt erst in main() zu erstellen?
     
  6. hopfe

    hopfe Haudegen

    Dabei seit:
    01.04.2003
    Beiträge:
    733
    Zustimmungen:
    0
    Ort:
    Aachen
    Warum mußt du vor den Aufruf von Main schon was mit den Variablen machen?

    main() wird für normal als aller erstes aufgerufen, ich denke nicht das du eine Funktion davor setzten kannst.
     
  7. #6 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,
    Vor dem Aufruf von main werden alle Konstructoren der globalen Klassen aufgerufen. Es wird also tatsaechlich ein Programmteil vor main aufgerufen. Meine globale Klasse muss nun etwas machen und dazu auf die argc/argv zugreifen.

    Viele Gruesse und vielen Dank fuer Eure Hilfe, Frank
     
  8. #7 h2owasser, 01.02.2005
    h2owasser

    h2owasser Sxe Power User

    Dabei seit:
    07.12.2002
    Beiträge:
    491
    Zustimmungen:
    0
    Warum nicht so wie etuli schon sagte?

    Code:
    #include <iostream>
    
    using namespace std;
    
    class d {
    
    public:
    d( int argc,char *argv[]);
    ~d();
    };
    
    d::d(int argc,char *argv[])
    {
    cout << "argc:" << argc << endl;
    }
    d::~d()
    {
    }
    main ( int argc, char *argv[] )
    {d st(argc,argv);}
    
     
  9. #8 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,
    weil st dann erst instanziert wird wenn main schon aufgerufen wurde und main eine C-Funktion ist.
    Es ist schon klar, dass nach dem Aufruf von main alles machbar ist. Aber ich brauche das leider schon vor main.

    Wenn es also keine Funktion gibt, die nur der C++-Compiler irgentwie zur Verfuehgung stellt, die vor allem aufgerufen wird und argc/argv bekannt macht, dann geht das, was ist brauche nicht.

    Viele Gruesse, Frank
     
  10. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Welche Anwendung, braucht denn solche Konstrukte? Mir faellt keine ein.
     
  11. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    ich würd mal sagen dass was du machen willst nicht funktioniert.

    aber ich kann mir nicht vorstellen das du das nicht irgendwie anders lösen kannst, indem du nicht im konstruktor auf argv zugreifst.
    aber da ich keine ahnung habe was du konkret machen wilst - und vor allem warum! - kann ich dir keinen lösungsvorschlag anbieten.
     
  12. #11 ExRevel, 02.02.2005
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Ich möchte mich dem etuli da gerne anschliessen, welche Applikation benötigt denn aufrufe vor main() wobei es eh schnee ist. Die Konstruktoren werden doch auch nicht vor main aufgerufen? Wo wäre der Sinn? Ich meine wenn ich eine Klasse instanziere dann wird der Konstruktor aufgerufen, wie soll er vorher aufgerufen werden, oder warum? Wenn keine Instanz gefordert wird, dann brauch doch auch der Konstruktor nett aufgerufen werden! Der Compiler verarbeitet die Klassen vllt. vor der main() aber doch nicht im Programmablauf... wenn ich mich so unglaublich täuschen sollte, dann haette ich gerne einen schwarz auch weiss beweis mittels einer kompetenten website.

    Also meine Meinung, das wird sicher nicht funktionieren was du vor hast.

    ciao Exi
     
  13. panzi

    panzi Grünschnabel

    Dabei seit:
    09.08.2003
    Beiträge:
    9
    Zustimmungen:
    0
    Probiers doch aus! Konstruktoren global angelegter Objekte werden vor main() ausgeführt!
    Code:
    #include <iostream>
    
    class Foo {
    public:
       Foo() { std::cout << "Foo()" << std::endl; }
       virtual ~Foo() { std::cout << "~Foo()" << std::endl; }
    };
    
    Foo bar;
    
    int main() {
       std::cout << "main()" << std::endl;
       return 0;
    }
    Ausgabe:
    Code:
    Foo()
    main()
    ~Foo()
     
  14. #13 pinky, 03.02.2005
    Zuletzt bearbeitet: 03.02.2005
    pinky

    pinky König

    Dabei seit:
    11.08.2004
    Beiträge:
    795
    Zustimmungen:
    0
    Also ich muß ehrlich sagen, dass ich das Problem auch nicht verstehe.
    Denn selbst wenn man, wie panzi gezeigt hat, ein globales Objekt erzeugt. Dann passiert darin ja noch nichts "dynamisches". Der Programmablauf beginnt immer in main(), warum dann also nicht einfach in main foo die Argumente mitteilen?

    Also z.B.
    Code:
    int main(int argc, char* argv[]) {
       foo.setArgs(argv);
       return 0;
    }
    
    Ausserdem sind globale Objekte mind. genauso unschön wie globale Variablen
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    kann pinky nur zustimmen - so würd ich das auch machen
     
  17. #15 ExRevel, 03.02.2005
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Ok, habe ich wieder was gelernt an panzis beispiel, nur auf die Argumente des Programms wird man dennoch nicht zugreifen können?! :) Ich kann nur wieder die gleiche Frage stellen wie pinky, wär schön wenn sich franksa dazu mal äußern würde... ist einfach nur interesse wann man sowas brauchen könnte.

    ciao Exi
     
Thema:

Zugriff auf int argc, char * argv[] vor main

Die Seite wird geladen...

Zugriff auf int argc, char * argv[] vor main - Ähnliche Themen

  1. Problem mit Win-Zugriff auf SAMBA

    Problem mit Win-Zugriff auf SAMBA: Hallo rundherum, vielleicht hat jemand eine Idee... Habe jetzt schon 1 1/2 Tage damit verbraten und den Fehler nicht gefunden. Problem:...
  2. Nach Update debian 8 ist der Zugriff auf samba4 nicht möglich

    Nach Update debian 8 ist der Zugriff auf samba4 nicht möglich: Gerade habe ich debian mit dem Befehl "apt-get ugrade" aktualisiert. Es gab zahlreiche neue Daten unteranderen samba files. Nach neuem Start kann...
  3. Hackerzugriff auf Mozilla-Bugtracker

    Hackerzugriff auf Mozilla-Bugtracker: Ein Hacker hatte mindestens ein Jahr, möglicherweise sogar zwei Jahre Zugriff auf den nicht öffentlichen Teil von Bugzilla, der...
  4. Dateizugriffsrechte

    Dateizugriffsrechte: Hey, wenn ich eine Datei habe und einem Nutzer Ausührrechte (x) gebe aber keine Lesrechte (r)? Was passiert dann? Kann er die Datei normal...
  5. Ubuntu 14.4: Samba v3 => v4, Kein Zugriff

    Ubuntu 14.4: Samba v3 => v4, Kein Zugriff: Hallo, letzte Woche habe ich auf Ubuntu 14.04 LTS aktualisiert. Dabei wurde Samba von v3 auf v4 aktualisiert. Nachdem vorher alles mit der...