我有一个模板SoundRecording.h
:如何在使用C++模板创建的类之间进行转换?
template <typename T>
class SoundRecording {
public:
explicit SoundRecording(T init);
private:
T data;
};
template <typename T>
SoundRecording<T>::SoundRecording(T init){
data = init;
}
而且我可以这样创建这个模板类的实例:
SoundRecording<int16_t> recording(INT16_MAX);
什么是recording
转换为SoundRecording<float>
的最佳方式?
我知道我可以用一个简单的方法,比如我可以声明:
SoundRecording<float> convertInt16ToFloat(SoundRecording<int16_t> input)
但我不知道是否有一个更优雅的方式来实现这一目标使用赋值或构造函数运算符。
更新以下评论:我期待定义一个明确的转换。在上面的例子中,recording.data
在施工后等于INT16_MAX
。在转换为float
后,它应该等于1.0F
。
目前尚不清楚要使用哪种转换。如果'T'可以转换为'U',你是否想要'SoundRecording'可以转换为'SoundRecording '?你需要显式还是隐式转换,并且只有当'T'可以隐式转换为'U'时它才能工作? –
Justin
取决于你所说的“优雅”。你描述的工作方式;你究竟想要改进什么? – anatolyg
对我来说,转换看起来应该是'SoundRecording'对象的责任,而不是单独的静态方法。如果我能避免它们,那么不是“实用”方法的粉丝。 – donturner