C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Deklaration eines class-type mit class/struct/union

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Markus Moll
Guest





PostPosted: Wed Feb 22, 2006 11:06 am    Post subject: Deklaration eines class-type mit class/struct/union Reply with quote



Hallo

Mein Compiler hat sich gerade über die folgende Vorwärtsdeklaration
beschwert (Warnung):

class A;

struct A
{

};

So wie ich 9(2), 9(4) und 9.1(2) lese, dachte ich, es müsse sogar möglich
sein, A mit dem union-Schlüsselword vorwärtszudeklarieren. Das mag aber
weder gcc noch Comeau online. Kann das jemand erklären?

(Solange die Definition noch nicht gesehen wurde, der Typ also nicht
komplett ist, sollte doch die Kenntnis, daß A ein class-name ist,
ausreichen?)

Gruß
Markus

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Rolf Magnus
Guest





PostPosted: Wed Feb 22, 2006 1:06 pm    Post subject: Re: Deklaration eines class-type mit class/struct/union Reply with quote



Markus Moll wrote:

Quote:
Mein Compiler hat sich gerade über die folgende Vorwärtsdeklaration
beschwert (Warnung):

class A;

struct A
{

};

So wie ich 9(2), 9(4) und 9.1(2) lese, dachte ich, es müsse sogar möglich
sein, A mit dem union-Schlüsselword vorwärtszudeklarieren.

Das steht da nicht. Es wird an dieser Stelle nur nicht ausgeschlossen.

Quote:
Das mag aber weder gcc noch Comeau online. Kann das jemand erklären?

Weil das in 7.1.5.3(3) verboten wird.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Markus Moll
Guest





PostPosted: Wed Feb 22, 2006 1:06 pm    Post subject: Re: Deklaration eines class-type mit class/struct/union Reply with quote



Hallo

Rolf Magnus wrote:

Quote:
Das mag aber weder gcc noch Comeau online. Kann das jemand erklären?

Weil das in 7.1.5.3(3) verboten wird.

Danke. Da hätte ich vermutlich nicht nachgesehen.

Gruß
Markus

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Stefan Reuther
Guest





PostPosted: Wed Feb 22, 2006 7:06 pm    Post subject: Re: Deklaration eines class-type mit class/struct/union Reply with quote

Rolf Magnus wrote:
Quote:
Markus Moll wrote:
class A;

struct A
{
};

Das mag aber weder gcc noch Comeau online. Kann das jemand erklären?

Weil das in 7.1.5.3(3) verboten wird.

Das würde ich da nicht rauslesen. Meiner Meinung nach wird damit nur
verboten, obiges mit 'enum A' zu referenzieren.

Wenn das Schlüsselwort, mit dem der Typ deklariert wird, das gleiche
sein soll wie das, mit dem er definiert wird, würde das auch da stehen
("shall be the same" statt "shall agree in kind"). Auch der letzte Satz
# [...] either the class or struct classkey shall be used to refer to a
# class (clause 9) declared using the class or struct classkey.
klingt für mich so, als ob die Namen austauschbar wären.

Mein gcc und der Borland-Compiler haben jedenfalls nichts dran zu mäkeln.


Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Markus Moll
Guest





PostPosted: Wed Feb 22, 2006 9:06 pm    Post subject: Re: Deklaration eines class-type mit class/struct/union Reply with quote

Hallo

Stefan Reuther wrote:

Quote:
Das würde ich da nicht rauslesen. Meiner Meinung nach wird damit nur
verboten, obiges mit 'enum A' zu referenzieren.

Wenn das Schlüsselwort, mit dem der Typ deklariert wird, das gleiche
sein soll wie das, mit dem er definiert wird, würde das auch da stehen
("shall be the same" statt "shall agree in kind"). Auch der letzte Satz
# [...] either the class or struct classkey shall be used to refer to a
# class (clause 9) declared using the class or struct classkey.
klingt für mich so, als ob die Namen austauschbar wären.

Ja, struct und class kann man beliebig austauschen (daher steht da "kind").
Es ging Rolf aber, glaube ich, mehr um meine Vermutung, man könne sogar
'union' verwenden. Das wird aber explizit ausgeschlossen.

Die Warnung (vom MS Visual Studio, ich habe nur die Warnung geschickt
bekommen) verstehe ich in der Tat auch nicht. "Vorsicht, du machst da was,
was du genausogut auch anders machen könntest"?

Gruß
Markus

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Stefan Reuther
Guest





PostPosted: Wed Feb 22, 2006 10:06 pm    Post subject: Re: Deklaration eines class-type mit class/struct/union Reply with quote

Markus Moll wrote:
Quote:
Stefan Reuther wrote:
Wenn das Schlüsselwort, mit dem der Typ deklariert wird, das gleiche
sein soll wie das, mit dem er definiert wird, würde das auch da stehen
("shall be the same" statt "shall agree in kind"). Auch der letzte Satz
# [...] either the class or struct classkey shall be used to refer to a
# class (clause 9) declared using the class or struct classkey.
klingt für mich so, als ob die Namen austauschbar wären.

Ja, struct und class kann man beliebig austauschen (daher steht da "kind").
Es ging Rolf aber, glaube ich, mehr um meine Vermutung, man könne sogar
'union' verwenden. Das wird aber explizit ausgeschlossen.

Hrmpf. Ich nehm gerade mal die Tomaten von meinen Augen. Insofern war
mein Einwand nicht berechtigt. Irgendwie hatte ich das als 'man darf
structs nicht als class referenzieren' gelesen.


Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
kanze
Guest





PostPosted: Thu Feb 23, 2006 5:06 pm    Post subject: Re: Deklaration eines class-type mit class/struct/union Reply with quote

Markus Moll wrote:

Quote:
Stefan Reuther wrote:

Das würde ich da nicht rauslesen. Meiner Meinung nach wird
damit nur verboten, obiges mit 'enum A' zu referenzieren.

Wenn das Schlüsselwort, mit dem der Typ deklariert wird, das
gleiche sein soll wie das, mit dem er definiert wird, würde
das auch da stehen ("shall be the same" statt "shall agree
in kind"). Auch der letzte Satz
# [...] either the class or struct classkey shall be used to refer to a
# class (clause 9) declared using the class or struct classkey.
klingt für mich so, als ob die Namen austauschbar wären.

Ja, struct und class kann man beliebig austauschen (daher
steht da "kind").

Das "kind" reicht aber nicht aus: es gibt hier zwei Arten:
"class-key" und "enum", oder est gibt vier "class", "struct",
"union" und "enum", je nach dem, wie man es betrachten will.

Die ausführlichen Erklärungen in den folgenden Sätzen aber sind
eindeutig, auch wenn sie dieses "kind" ein bisschen
wiedersprechen. (Warum union/class nicht gehen soll, verstehe
ich eigentlich nicht. Wenn man behauptet, dass eine Union eine
Klasse ist, in jedem Fall, wie die Norm macht.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.