2010-10-26 6 views
4

$ 3.5 - « En outre, un membre fonction , membre de données statiques, énumération classe ou de portée de la classe a lien externe si le nom de la classe a une liaison externe. »Lien des noms de classe

Toute entrée sur ce que cela signifie par 'if the name of the class has external linkage'?

L'indice est-il sur les 'classes locales' (qui n'ont probablement aucun lien) par rapport à la classe définie dans la portée de l'espace de noms et les classes d'étendue d'espaces de noms définies avec un spécificateur statique?

Répondre

3

Les classes locales (mais pas nécessairement les classes imbriquées) n'ont pas de liaison. Une classe ne peut pas être définie avec un spécificateur statique. Donc ceci peut être indiqué comme suit:

$ 3.5 - «De plus, une fonction membre, un membre de données statiques, une classe ou une énumération de portée de classe a un lien externe sauf si la classe conteneur est une classe locale ou est directement ou indirectement classe imbriquée dans une classe locale. "

+0

Qu'en est-il de 'typedef struct {} A;' à la portée de l'espace de noms. Quel lien a-t-il? – Chubsdad

+0

@ Chubsdad: Lien externe. 3.5/4: "Un nom ayant une portée d'espace de nommage a un lien externe s'il s'agit du nom d'une classe nommée (clause 9) ou d'une classe sans nom définie dans une déclaration typedef * dans laquelle la classe * a le nom typedef à des fins de liaison * (7.1.3) " – usta

+0

Intéressant .... – Chubsdad

Questions connexes