0

我正在编写一个既适用于 2D 又适用于 3D 的模拟。现在我得到了应该修改表面的对象。在 3D 中,表面是一个二维数组,而在 2D 中,它是一维的。我使用模板参数来指示我使用的维度空间。但是,当我专门研究数组的类型时,我无法专门修改修改函数,因为它应该在指定的类中。然后我必须将所有成员复制到专业类中。

template <class VectorType> class SimulationObject {
    void operateOnSurface();
};

template<> class SimulationObject<Vector2D> {
    char* surface;
 // Declaration of operateOnSurface expected here
};

template<> class SimulationObject<Vector3D> {
    char** surface;
// Declaration of operateOnSurface expected here
};

template<> void A<Vector2D>::operateOnSurface() {
}

template<> void A<Vector3D>::operateOnSurface() {
}

但我仍然想避免复制 2d 和 3d 的代码,因为我的表面数组和修改函数是唯一指定它的成员。那么还有其他方法吗?

4

1 回答 1

0

如果您可以访问 Vector2D 和 Vector3D,则可以为static const int dimensions;它们添加一个变量并使用VectorType::dimensions.

于 2012-06-02T22:03:30.933 回答