我目前正在研究需要在3D引擎,物理引擎和腳本語言之間移動數值的遊戲「引擎」。由於我需要將物理引擎中的矢量應用於3D對象,並希望能夠通過腳本系統控制3D以及物理對象,所以我需要一種機制來轉換一種類型的矢量(例如(例如btVector3
)。不幸的是,我不能假定類/結構是如何佈局的,所以簡單的reinterpret_cast
可能不會。非會員轉換功能;投射不同的類型,例如DirectX矢量到OpenGL矢量
所以,問題是:是否有某種「靜態」 /非會員的鑄造方法來實現基本上是這樣:現在這不會編譯因爲鑄造運營商需要爲成員方法
vector3d<float> operator vector3d<float>(btVector3 vector) {
// convert and return
}
btVector3 operator btVector3(vector3d<float> vector) {
// convert and return
}
。 (error C2801: 'operator foo' must be a non-static member
)
感謝亞當!這就是我現在所做的。我想知道是否有可能讓編譯器完成這項工作。就像「如果你想去那裏,先去那裏」。 – sunside 2010-06-08 19:10:12
我明白。雖然這個解決方案似乎對我來說最直接,但我在另一個答案中增加了另一種可能 – 2010-06-08 21:35:39
使用免費功能。隱式轉換通常是一個糟糕的途徑,即使它們是可以接受的。 – jalf 2010-06-08 22:47:03