2009-12-01 99 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);