d我正在编写一个模拟程序。现在它应该适用于 2D 和 3D,所以我试图让我的课程适用于 2D 和 3D 向量。此外,向量应该有一个模板参数来指示坐标应该使用哪种类型。
我的基类如下所示:
class SimulationObject {
AbstractVector<int>* position;
AbstractVector<float>* direction;
}
现在的问题是,我不能使用多态性,因为那时我所有的向量都必须是指针,这使得操作符重载几乎不可能用于这样的操作:
AbstractVector<float>* difference = A.position - (B.position + B.direction) + A.direction;
但我也不能使用模板参数来指定要使用的类型:
template <typename T> class Vector2d;
template <typename T> class Vector3d;
template <class VectorType> class SimulationObject {
VectorType<int> position;
VectorType<float> direction;
}
SimulationObject<Vector2D> bla;
//fails, expects SimulationObject< Vector2D<int> > for example.
//But I don't want to allow to specify
//the numbertype from outside of the SimulationObject class
那么,怎么办?