Was gehoert in main()?
-
Sollte man es denn so machen, oder in main?
Oder ist es egal?
-
Cool! Also willst du dein Programm in den Konstruktoren und Destruktoren laufen lassen?
Ein Fall für den obfuscated-Code-ContestEdit: Für mich gehört in Main die Hauptschleife, die Initialisierung, und das Aufräumen, aber nicht zu abstrahiert. Bei mir füllt Main, drei Bildschirme.
-
hmm interessant
-
Raptor schrieb:
Sollte man es denn so machen, oder in main?
Oder ist es egal?Du solltest es auf keinen Fall so machen wie in meinem Code! Das war nur ein nicht ganz ernst gemeintes Beispiel!
-
randa schrieb:
Cool! Also willst du dein Programm in den Konstruktoren und Destruktoren laufen lassen?
Ein Fall für den obfuscated-Code-ContestKlar. in main() kommt nur noch ein cout << "Spiel beendet"; rein
Anmerkung: Nicht nur in den Ctoren. Ich kann ja problemlos aus nem Ctor andere Methoden, Funktionen aufrufen.
-
Klar.
Ist es denn das einzige Moeglichkeit, die main Funktion zu "skippen", oder kann man auch vernuenftigen Code _ohne_ main schreiben?
-
@interpreter wie rufst du in dem beispiel den dtor auf?
wartet main mit dem rücksprung bis du den dtor aufrufst oder wie läuft das
-
ja, so:
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { return 0; }
Ne, ohne Main bzw. WinMain kannst du nichts anstellen. Das ist die Startfunktion eines jeden Programms, hier startet man, und hier beendet man auch wieder. Wie gesagt, versuch nicht, Main irgendwie zu umgehen (so wie interpreter
), sondern schreibe die wichtigsten Initialisierungsfunktionen und den Programmablauf dort rein.
-
Hi!
Wo hast du das her, das man einfach nur was hinter die Klasse schreiben muss? Habe ich noch nie gesehen.
Code-Hakcer
-
@Code-Hacker
Deswegen steht hinter einer class definition das ;
und zwar genau deshalb, weil du da noch direkt objekte erstellen kannst.
-
Hi!
Raptor schrieb:
@Code-Hacker
Deswegen steht hinter einer class definition das ;
und zwar genau deshalb, weil du da noch direkt objekte erstellen kannst.Stimmt...hätte ich auch selbst drauf kommen können. Danke!
Code-Hacker
-
Code-Hacker schrieb:
Hi!
Wo hast du das her, das man einfach nur was hinter die Klasse schreiben muss? Habe ich noch nie gesehen.
Code-Hakcer
Naja, man kann nach einer Struktur oder Klassendefinition auch noch gleich Instanzen der jeweiligen Struktur/Klasse anlegen:
struct point { int x, y; }p1,*p2; int main() { std::cout << p1.x << std::endl;; p2 = new point; p2->x = 2; std::cout << p2->x; std::cin.get(); }
Sovok schrieb:
@interpreter wie rufst du in dem beispiel den dtor auf?
wartet main mit dem rücksprung bis du den dtor aufrufst oder wie läuft dasDer wird automatisch nach main() aufgerufen
-
ahso jetzt hab ichs verstanden
du blockst einfach den ctor *g*
-
Lol. Wieder 2 Seiten für sone Frage.....geil. Was würde ich nur ohne das Forum machen. :p
-
CarstenJ schrieb:
Lol. Wieder 2 Seiten für sone Frage.....geil. Was würde ich nur ohne das Forum machen. :p
Auf jeden Fall hättest du diesen Beitrag nicht verfasst
-
interpreter schrieb:
Seltsame Frage...
Da gibts doch kein Patentrezept.als ich noch den msvc60 verwendete, hatte ich ne patentrezeptmain. sie machte eigentlich nur am ende warten, falls im debugger gestartet, exceptions fangen und ausgeben und test() aufrufen (ups, ganz in der falschen reihenfolge aufgeschrieben).
-
Und was hat jetzt MinGW Developer Studio daran geändert?
-
löl schrieb:
Und was hat jetzt MinGW Developer Studio daran geändert?
hab keine makros mehr, um mit einem klick, dem namen der klasse (bzw "main" für die main.cpp) mir ne datei (bzw. zwei bei klassen) ins projekt einfügen zu lassen. die patentrezeptmain war nur abfall beim neue-klasse-anleger.
und wenn's keiner automatisch macht, bau ich halt wie vorher auch zuerst dieint main(){ }
und lasse immer nur bei bedarf was dazuwachsen.