【问题标题】:C++ type casting vector classC++ 类型转换向量类
【发布时间】:2026-02-10 11:55:01
【问题描述】:

我有两个向量类:

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);

【问题讨论】:

  • 真正要解决的问题是什么 - 为什么需要两个看似相同的类?
  • 作者可能不想在他或她自己的 Vector 类上使用 D3DX 的实用函数,但不想创建对 D3DXVECTOR3 的依赖。
  • 他仍然会依赖该函数。所以我看不到任何好处。
  • 它可能在另一个文件中(不是 MyVector3.h/cpp),因此您不会创建从 MyVector3 到 D3DXVECTOR3 的直接依赖关系。

标签: c++ casting types vector


【解决方案1】:
function(reinterpret_cast<D3DXVECTOR3*>(&vTest));

一般来说你应该避免reinterpret_cast

【讨论】:

    【解决方案2】:

    看起来你想要一个 D3DXVECTOR3 的包装类。在这种情况下,只需从中继承 MyVector3 。然后,您可以在之前可以通过 D3DXVECTOR3* 的任何地方传递 MyVector3*。

    【讨论】:

      【解决方案3】:

      老 c 风格的演员表

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

      【讨论】: