我正在编写一个既适用于 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 的代码,因为我的表面数组和修改函数是唯一指定它的成员。那么还有其他方法吗?