2009-12-01 69 views
1

我有两个向量类:C++的类型转换向量类

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

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

和功能:

void function(D3DXVECTOR3* Vector); 

怎么可能(如果可能的话),以实现这样的事情:

MyVector3 vTest; 
function(&vTest); 
+0

什么是正在解决真正的问题 - 你为什么需要两个看似相同的类? – sharptooth 2009-12-01 13:29:09

+0

作者可能不想在他或她自己的Vector类中使用D3DX的效用函数,但不想创建对D3DXVECTOR3的依赖关系。 – 2009-12-01 13:34:13

+0

他仍然会依赖该功能。所以我看不到任何好处。 – sharptooth 2009-12-01 13:38:18

回答

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

一般来说,你应该避免reinterpret_cast

1

看起来你想要一个D3DXVECTOR3的包装类。在这种情况下,只需从它继承MyVector3。然后,您可以在任何可以传递D3DXVECTOR3 *的位置传递MyVector3 *。

1

老C样式转换

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