首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用的C++模板多态性

使用的C++模板多态性
EN

Stack Overflow用户
提问于 2020-12-09 10:15:17
回答 1查看 45关注 0票数 1

我需要为相机类定义一个图形用户界面,其中我有不同类型的相机。因此,为了做到这一点,我真的想使用多态性,因为对于不同的实现(Camera1Camera2),使用一个接口Camera1Camera2是有意义的。问题是不同的实现需要使用模板的不同类型的BufferCalculations,所以我不能使用Camera* camera;,但是我需要使用类似的Camera<unsigned char>* camera;

即使在BufferCalculations类中有模板,我是否可以在CameraGui类中使用多态性?

代码语言:javascript
运行
复制
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; }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-09 10:20:51

这取决于您想在CameraGui中做什么。如果它不依赖于Camera的模板参数类型,则可以执行如下操作:

代码语言:javascript
运行
复制
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中的操作依赖于该类型,则可以使其本身成为模板类,也可以使操作接受/返回从非模板类型派生的对象的层次结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65214764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档