我有一個模板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