kein NULL in C++?
-
gast1987 schrieb:
t = NULL;Dazu müsste t ein Zeiger sein, in Deinem Beispiel ist es aber ein Objekt.
-
Belli schrieb:
in Deinem Beispiel ist es aber ein Objekt.
Das steht nirgends.
-
Ja, Test2 könnte natürlich auch ein typedef auf einen Zeiger sein, oder den Konstruktor Test2(Irgendwas*) haben

-
gast1987 schrieb:
Test(){
s = "";
nr = 0;
t = NULL;
};Und hinter eine Funktion gehört normal kein Semikolon.
-
bmario schrieb:
gast1987 schrieb:
Test(){
s = "";
nr = 0;
t = NULL;
};Und hinter eine Funktion gehört normal kein Semikolon.
aber wieso ist es dann erlaubt?!?
-
Und was heißt überhaupt in diesem Zusammenhang 'normal'? Gehört es eventuell 'unnormal' dahin?
-
Skym0sh0 schrieb:
aber wieso ist es dann erlaubt?!?
Wer hat das gesagt? Nur weil es ein Compiler toleriert, bedeutet das noch gar nichts.
-
Skym0sh0 schrieb:
bmario schrieb:
gast1987 schrieb:
Test(){
s = "";
nr = 0;
t = NULL;
};Und hinter eine Funktion gehört normal kein Semikolon.
aber wieso ist es dann erlaubt?!?
Ist es doch gar nicht.
Dein Compiler meckert nicht drüber, weil er ein total Lieber ist.
-
Skym0sh0 schrieb:
bmario schrieb:
gast1987 schrieb:
Test(){
s = "";
nr = 0;
t = NULL;
};Und hinter eine Funktion gehört normal kein Semikolon.
aber wieso ist es dann erlaubt?!?
Es gehört nicht zur Funktion, sondern kennzeichnet eine leere Deklaration nach der Funktion.
-
ipsec schrieb:
Es gehört nicht zur Funktion, sondern kennzeichnet eine leere Deklaration nach der Funktion.
In welcher Sprache gibt es die leere Deklaration?
Es gibt was ähnliches hier in C++, das leere Kommando. Aber das geht nur innerhalb von Funktionen.
-
volkard schrieb:
ipsec schrieb:
Es gehört nicht zur Funktion, sondern kennzeichnet eine leere Deklaration nach der Funktion.
In welcher Sprache gibt es die leere Deklaration?
In unserem geliebten C++

Guck ma auf http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf im Anhang A.6.
-
ipsec schrieb:
In unserem geliebten C++

Guck ma auf http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf im Anhang A.6.
Seltsam. Hast recht.
-
Belli schrieb:
Und was heißt überhaupt in diesem Zusammenhang 'normal'? Gehört es eventuell 'unnormal' dahin?
Nein, auch nicht unnormal. Aber wie ipsec zeigte, ist ein Semikolon eine leere Deklaration und damit erlaubt. Da dem Compiler Whitespaces zwischen Token egal sind, ist ein Semikolon an der Stelle zwar erlaubt, aber trotzdem nicht richtig. Das wollte ich mit "normal" ausdrücken

-
volkard schrieb:
ipsec schrieb:
In unserem geliebten C++

Guck ma auf http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf im Anhang A.6.
Seltsam. Hast recht.Den Abschluss eine Leeranweisung ist auch über das expression-statement möglich.
-
Dann bleibt mir nur noch die kleine Frage
int main() { ;//Deklaration oder Anweisung? }
-
volkard schrieb:
Dann bleibt mir nur noch die kleine Frage
int main() { ;//Deklaration oder Anweisung? }Ambigious

-
314159265358979 schrieb:
Ambigious

Und dabei wollte ich heute in der Teepause einen C++-Compiler schreiben. So einfach scheint das dann doch nicht zu sein.
-
Leeranweisungen sind ja ab und zu nützlich, aber leere Deklarationen würde ich definitiv in die C++-Unterkategorie "schwarze Magie" einordnen. Und natürlich keine Funktionsdefinitionen damit abschliessen, wieso auch?

-
Nexus schrieb:
Leeranweisungen sind ja ab und zu nützlich, aber leere Deklarationen würde ich definitiv in die C++-Unterkategorie "schwarze Magie" einordnen. Und natürlich keine Funktionsdefinitionen damit abschliessen, wieso auch?

Zur Konsistenz wegen den verpflichtende Abschluss bei der Klasse!