c – 我可以根据模板参数将某个值传递给成员构造函数吗?

c – 我可以根据模板参数将某个值传递给成员构造函数吗?,第1张

概述这是我拥有的类模板的简化版本(它有子类): template<class T>class Bitmap{public: typedef T pixeltype; Bitmap(const T* PixelData) : Data(/* PixelFormat enum based on T */) { ... } virtual ~Bitmap() { ... } ...p 这是我拥有的类模板的简化版本(它有子类):

template<class T>class Bitmap{public:  typedef T pixeltype;  Bitmap(const T* PixelData) : Data(/* PixelFormat enum based on T */) { ... }  virtual ~Bitmap() { ... }  ...protected:  Texture Data;};

模板参数T到Bitmap可以是A类< X>.或A< Y> (可能在未来还有一些),其中A也是一个类模板.基于T,aka pixeltype,我需要将枚举值PixelFormatX或PixelFormatY中的一个传递给Data的构造函数,它接受一个int.

这可能吗?如果没有,我怎么能实现我所描述的?

为了完整性,这里的子类基本上是这样的:

template<class T>class colorizableBitmap : public Bitmap<T>{public:  typedef T pixeltype;  colorizableBitmap(const T* PixelData) : Bitmap<T>(PixelData) { ... }  ...};
解决方法 我通常使用traits结构:

template<class T>struct BitmapTraits{};template<class T,class traits = BitmapTraits<T> >class Bitmap{public:  typedef T pixeltype;  Bitmap(const T* PixelData) : Data(traits::PixelFormat) { ... }  virtual ~Bitmap() { ... }  ...protected:  Texture Data;};

然后使用模板专门化来定义每个类的特征:

template<>struct BitmapTraits< A<X> >{    static const int PixelFormat = PixelFormatX;};template<>struct BitmapTraits< A<Y> >{    static const int PixelFormat = PixelFormatY;};
总结

以上是内存溢出为你收集整理的c – 我可以根据模板参数将某个值传递给成员构造函数吗?全部内容,希望文章能够帮你解决c – 我可以根据模板参数将某个值传递给成员构造函数吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存