miaohuawuseng 2016-06-05 03:13 采纳率: 0%
浏览 1746

模板类中怎么根据实例化的参数不同,进行不同的处理?

模板类中怎么根据实例化的参数不同,进行不同的处理?
template
class Unit
{
private:
int value;
UnitType unit;
TYPE type;
public:
bool operator== (Unit & rht);
Unit operator+ (Unit & rht);
Unit();
Unit(int value, UnitType unit);

};

UnitType是模板参数,我想在成员函数中根据实例化时 UnitType的不同,进行分别处理,应该怎么实现。

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-06-05 04:38
    关注
     从设计的角度来说,你的设计根本不符合模板语法特性的使用场景,完全属于“给汽车装上抬轿杆”的设计。
    正确的做法是使用模板设计模式,将你的需要根据UnitType的不同,进行分别处理的代码分散在不同的实现类中,一个基本的框架代码是:
    template <typename UnitType>
    abstract class InInitializer<UnitType>
    {
    public: virtual void foo() = 0;
    };
    根据不同类型初始化:
    比如对于int类型
    class InitInInitializer : InInitializer<int>
    {
    public: void foo() { 你的代码... }
    }
    ...
    在主程序中
    Unit(int value, UnitType unit, InitInInitializer<UnitType> init)
    {
    ...
    init.foo(); // 这样会根据你定义的不同的实现类,自动匹配不同的分别处理的代码
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘