C ++模板类,根据类型名更改类方法的行为

时间:2018-06-19 15:47:00

标签: c++ templates template-specialization

我有一个模板类,我正在尝试基于类的类型名对其方法进行专门研究。代码的骨架如下:

template <typename C> class Instance {
  protected:
    C data;
  public:
    void populateData();
    /* want to change the behavior of populateData() depending on C */
};

我如何实现上述目标?

1 个答案:

答案 0 :(得分:4)

我想这就是你想要的:

template <typename C> class Instance {
  protected:
    C data;
  public:
    void populateData();
    /* want to change the behavior of populateData() depending on C */
};

template<>
void Instance<int>::populateData() {
    // Do something when C is int
}

您可以将功能专门化为所需的任何类型。