C ++如何实例化通用模板类并在以后定义其类型?

时间:2019-05-09 16:34:59

标签: c++ c++11 templates

我正在做有关C ++模板的工作,我想实例化一个模板化的类而不先定义它的类型。在输入一些用户信息之后,我希望能够根据用户输入正确定义具有特定类型的类。声明之后,无论类型如何,我都希望按正常方式处理该类。

我定义了一个音频类,其类型可以为int16_t或int8_t,具体取决于用户加载的是16位音频原始数据还是8位原始音频。我不想像对待腰部那样单独处理每个人,我觉得有更好的方法来做。

audio.h中音频类的片段

template<typename T>
class audio{
  ...
  void exampleFunction(); // example function
}

我不想做什么,但是提供了所需的功能:

#include "audio.h"
main(...){
  bool is16Bit = //user input

  if(is16Bit){
    audio<int16_t> a = audio<int16_t>();
    a.exampleFunction();
  }else{
    audio<int8_t> a = audio<int8_t>();
    a.exampleFunction();
  }
}

我想做什么,但是我不确定如何做:

#include "audio.h"
main(...){
  bool is16Bit = //user input

  audio<???> a;
  if(is16Bit){
    a = audio<int16_t>();

  }else{
    a = audio<int8_t>();

  }

  a.exampleFunction();
}

我希望能够执行完整的函数调用列表,而不必将其复制并粘贴到每个if语句中

0 个答案:

没有答案