我需要爲我的類的構造函數是把參數作爲同一類T1
類型的對象,並創建T
類型的對象的對象創建
編譯器是決定是否可以完成轉換T1 -> T
的人。
例如:如果我有
Object<int> o;
Object<double> o1(o);
這應該工作,因爲它不會失去精度。它不應該反過來(在整型對象中複製double值)。 有人可以請幫助/告訴我如何做到這一點?
我需要爲我的類的構造函數是把參數作爲同一類T1
類型的對象,並創建T
類型的對象的對象創建
編譯器是決定是否可以完成轉換T1 -> T
的人。
例如:如果我有
Object<int> o;
Object<double> o1(o);
這應該工作,因爲它不會失去精度。它不應該反過來(在整型對象中複製double值)。 有人可以請幫助/告訴我如何做到這一點?
模板複製構造函數如何?
template<typename T>
class Object
{
template<typename U>
Object(const Object<U>& rhs)
: val(rhs.val()) // initialize appropirate members
{
// here you can assert what types U can be
static_assert(!(std::is_integral<T>::value &&
std::is_floating_point<U>::value),
"Can't construct Object<Integral> with Object<FloatingPoint>");
}
};
謝謝你的答案,我最初以爲這樣的事情是這樣的但我無法讓它工作。我的類是基於模板struct(int i; int j; T val),並且在我的類中聲明爲:structName
你應該已經在問題中發佈了所有相關信息,以便可以在考慮之列。 – DeiDei
對不起,我的壞。 – user7337963
什麼是您的實際問題?正確判斷精度是否正在丟失?你如何定義非整型類型的精度? –
真的,從浮點到積分的轉換不應該由您的班級處理,而應該由用戶來處理。如果你想要這樣做,這是允許的。 – DeiDei
我的一般問題是:我正在實現一個類似2d的數組類,它具有存儲vale的索引(int row int col)和一個模板值(我添加到數組中的實際值)。我必須從現有的U型數組中創建一個T型數組。這個問題的文本說:委託給編譯器鑄造控制(U - > T) – user7337963