2013-09-01 4 views
0

dans la bibliothèque math3d, l'auteur a utilisé cette ligne suivante qui m'a confondu. Je me demandais si quelqu'un pouvait expliquer l'utilisation.utilisation de typedef dans la bibliothèque math3d

typedef float M3DVector2f[2]; 

Comment un tableau peut-il être synonyme d'un seul flottant?

+0

Il est un tableau de 2 flotteurs. Il y a aussi un indice dans le nom (2f). –

+0

Tout est bon.Mais c'est vraiment la première fois en C++, je suis tombé sur quelque chose d'aussi étrangement représenté ... ça n'aurait pas été plus logique de le représenter comme 'typedef float [2] M3DVector2f? ' –

+1

@nerorevenge vous déclarez un tableau comme ça 'float [2] x;'? Évidemment c'est illégal, donc ce serait aussi illégal pour un typedef. Fondamentalement, c'est la même raison pour laquelle vous écrivez un [1] pas [1] a. – john

Répondre

3

M3DVector2f est un alias pour un float tableau de 2 éléments.

Il évite excès frappe et donner un sens nom

Ainsi, vous pouvez dire simplement,

M3DVector2f point1, point2;

au lieu de float point1[2], point2[2];

ou

M3DVector2f point3 ={2.3f,-2.1f};

au lieu de float point3[2] ={2.3f,-2.1f};

+0

haha ​​pas plus de modifications sont nécessaires, j'ai eu le geist de it.I pensait que c'était un de ces trucs bizarres de type c où l'on pourrait s'en tirer avec une syntaxe bizarre ou une syntaxe bizarre pour effrayer noobs comme moi. –

+0

Soyez prudent lorsque vous utilisez ce type dans un paramètre de fonction. Si 'M3DVector2f' était une' struct', vous pourriez faire circuler des copies; Comme c'est un alias à un type tableau, vous aurez toujours un pointeur vers les données d'origine. – DanielKO

Questions connexes