Zwei Syntax Fragen
-
Ok, danke für die ganzen schnell Antworten

-
int * p = new int;
-

Ja, manuelle Speicherverwaltung, sehr schön, sehr fehleranfällig. Was willst du uns damit sagen?
-
das "int" hinter dem "new" ist ein einfaches Beispiel für eine type-id, also ein declarator ohne zu deklarierenden Namen
manchmal verwendet man solche Dinge, ohne viel darüber nachzudenken
-
Nathan schrieb:
Bisher hatte ich noch nie einen Fall, wo das nötig geworden ist. @Obvious
Und daraus folgt, dass es niemals nötig ist?
-
Nein, daraus folgt, dass ich an solche Anwendungsfälle nicht gedacht habe, als ich meinen Post schrieb.
Und rein theoritisch ist das niemals nötig, weil genau so gut, die Argumente in der Klasse gespeichert werden können über eine andere Funktion und in der entsprechenden Funktion dann auf die gespeicherten Argumente zugegriffen wird.
-
Anderes Beispiel: Du hast Funktionszeiger in einem Container, die nunmal eine bestimme Signatur haben (input/output). Nicht jede Funktion verwendet aber den input.
Ganz allgemein braucht man sowas, wenn man zwar im allgemeinen den Parameter braucht, in Spezialfällen aber eben nicht.
Und ja, das ist dafür da um Warnings zu unterdrücken und meiner nach besser als die "Alternativen" wie unused = unused;
-
Ja, da hsst du Recht.
In solchen Fällen kann man aber auch einfach schreiben:void foo(T, U) { //... }Das ist meiner Meinung nach schöner als diese "hässlichen" C-Style-Kommentare.
-
icewater schrieb:
Moin, ich hab da mal zwei Fragen zum C++ Syntax: (Die Methoden stammen nicht von mir)
int SimpleGUI::InitGUI(const char* /*name*/, const std::vector<std::string>& /*options*/) { return 0; }Warum kommentiert man die Übergabeparameter aus?
Damit der Compiler keine Warnug raustut, daß die Parameter nicht benutzt worden wären.
An sich eine gute Idee.
Es gibt natürlich auch andere Wege, das zu bewerkstelligen.int SimpleGUI::InitGUI(const char* name, const std::vector<std::string>& options) { (void)name;//only to make the compiler happy (void)options;//only to make the compiler happy return 0; }int SimpleGUI::InitGUI(const char* name, const std::vector<std::string>& options) { boost::do_absolutely_nothing_with(name,options); return 0; }
-
volkard schrieb:
int SimpleGUI::InitGUI(const char* name, const std::vector<std::string>& options) { boost::do_absolutely_nothing_with(name,options); return 0; }Da hatte aber jemand eine Menge Spaß

-
Nathan schrieb:
Ja, da hsst du Recht.
In solchen Fällen kann man aber auch einfach schreiben:void foo(T, U) { //... }Das ist meiner Meinung nach schöner als diese "hässlichen" C-Style-Kommentare.
Der Meinung bin ich prinzipiell auch.
void foo(T first, U second); //damit der nutzer sieht was die Parameter prinzipiell bedeuten void foo(T, U) //wenn ich sie nicht verwende { }