2009-12-01 2 views
1

J'ai deux classes de vecteur:C++ classe type de coulée de vecteur

typedef struct D3DXVECTOR3 { 
    FLOAT x; 
    FLOAT y; 
    FLOAT z; 
} D3DXVECTOR3, *LPD3DXVECTOR3; 

et

class MyVector3{ 
    FLOAT x; 
    FLOAT y; 
    FLOAT z; 
}; 

et une fonction:

void function(D3DXVECTOR3* Vector); 

Comment est-il possible (si possible) à réaliser quelque chose comme ceci:

MyVector3 vTest; 
function(&vTest); 
+0

Quel est le vrai problème étant résolu - pourquoi avez-vous besoin deux classes apparemment identiques? – sharptooth

+0

L'auteur pourrait ne pas utiliser une fonction utilitaire de D3DX sur sa propre classe Vector mais ne souhaite pas créer de dépendance à D3DXVECTOR3. –

+0

Encore il aurait une dépendance à cette fonction. Donc, je ne vois aucun avantage. – sharptooth

Répondre

2
function(reinterpret_cast<D3DXVECTOR3*>(&vTest)); 

En général, cependant, vous devriez éviter reinterpret_cast.

1

On dirait que vous voulez une classe wrapper pour D3DXVECTOR3. Dans ce cas, héritez simplement de MyVector3. Ensuite, vous pouvez passer MyVector3 * partout où vous pourriez passer plus tôt D3DXVECTOR3 *.

1

vieux c style casting

MyVector3 vTest; 
function((D3DXVECTOR3*)&vTest);