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

use*_*089 1 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 */
};
Run Code Online (Sandbox Code Playgroud)

我如何实现上述目标?

Dim*_*htz 5

我想这就是你想要的:

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
}
Run Code Online (Sandbox Code Playgroud)

您可以将函数专门化为您想要的任何类型。