OVH Cloud OVH Cloud

struct et class

3 réponses
Avatar
Loïc Joly
Bonjour à tous.

Je sais qu'à part les spécifications d'accès par défaut, struct et class
sont équivalents. Par contre, un type déclarée par struct peut il être
forward déclaré par class, ou réciproquement ?

J'ai eu récemment ce problème avec Visual C++, où il manglait le nom
d'une fonction différemment si c'était une class ou une struct, et donc
à la suite d'une forward declaration non concordante n'arrivait plus à
s'y retrouver. A-t-il raison ?

Merci,

--
Loïc

3 réponses

Avatar
Fabien LE LEZ
On Thu, 10 Mar 2005 22:46:40 +0100, Loïc Joly
:

Par contre, un type déclarée par struct peut il être
forward déclaré par class, ou réciproquement ?


Il me semble que oui. Je dis "Il me semble" car je n'aime pas être
péremptoire, mais je crois bien me rappeler avoir vu une confirmation
ici même.
Toutefois, ce n'est que la norme ISO-C++, pas forcément le
comportement de compilateurs "presque-C++" qui suivent vaguement la
norme...

J'ai eu récemment ce problème avec Visual C++, où il manglait le nom
d'une fonction différemment si c'était une class ou une struct


Encore un bug de VC++ ?


--
;-)

Avatar
kanze
Loïc Joly wrote:

Je sais qu'à part les spécifications d'accès par défaut,
struct et class sont équivalents. Par contre, un type déclarée
par struct peut il être forward déclaré par class, ou
réciproquement ?


Certes. Les mots clés struct, class et union déclarent des types
de classe, voir §3.9.2 et §9.1. (La situation me semble moins
claire en ce qui concerne les unions ; §3.9.2 les cite bien
séparement des classes, tout en disant qu'elles sont des
classes. Mais §9.1 me semble clair ; il n'existe pas de type
union.)

J'ai eu récemment ce problème avec Visual C++, où il manglait
le nom d'une fonction différemment si c'était une class ou une
struct, et donc à la suite d'une forward declaration non
concordante n'arrivait plus à s'y retrouver. A-t-il raison ?


C'est une incompatibilité avec la norme. Et avec l'ARM, je
crois ; je n'en ai pas une copie ici pour vérifier, mais il me
semble que la norme n'a rien changé à cet égard.

--
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

Avatar
Gabriel Dos Reis
Loïc Joly writes:

| Bonjour à tous.
|
| Je sais qu'à part les spécifications d'accès par défaut, struct et
| class sont équivalents. Par contre, un type déclarée par struct peut
| il être forward déclaré par class, ou réciproquement ?

Oui.

[ mes excuses à tous ceux qui attendent que je leur réponde -- je suis
quelque part enfoui dans les deserts du middle-west et je ne fais que
survoler les messages. ]

-- Gaby