我需要为相机类定义一个图形用户界面,其中我有不同类型的相机。因此,为了做到这一点,我真的想使用多态性,因为对于不同的实现(Camera1,Camera2),使用一个接口Camera1和Camera2是有意义的。问题是不同的实现需要使用模板的不同类型的BufferCalculations,所以我不能使用Camera* camera;
,但是我需要使用类似的Camera<unsigned char>* camera;
,
即使在BufferCalculations类中有模板,我是否可以在CameraGui类中使用多态性?
template <typename T> class BufferCalculation {...}
template <typename T> class Camera { BufferCalculation<T> bufferCalculation; }
class Camera1 : public Camera<unsigned char> {}
class Camera2 : public Camera<unsigned short> {}
class CameraGui { Camera* camera; }
发布于 2020-12-09 10:20:51
这取决于您想在CameraGui
中做什么。如果它不依赖于Camera
的模板参数类型,则可以执行如下操作:
class BasicCamera {...};
template <typename T> class BufferCalculation {...}
template <typename T> class Camera : public BasicCamera { BufferCalculation<T> bufferCalculation; }
class Camera1 : public Camera<unsigned char> {}
class Camera2 : public Camera<unsigned short> {}
class CameraGui { BasicCamera* camera; }
如果CameraGui
中的操作依赖于该类型,则可以使其本身成为模板类,也可以使操作接受/返回从非模板类型派生的对象的层次结构。
https://stackoverflow.com/questions/65214764
复制相似问题