[英]c++: implement operators using constructors
我已經在C ++中創建了一個類,該類具有unsigned short
, signed short
和`const char*
等`const char*
。我想為所有這些類重載運算符。 最有效的方法是什么? 我真的需要為每個運算符和每種類型編寫一個函數,還是可以使用一些魔術?
我想重載新類型的變量可以位於其他類型的左側或右側的情況。 另外,我想調整一些類型,例如,如果我添加float,double或Float,則新類型Int必須返回新類型Float。 如果沒有為每種類型手動編寫函數,這是否有可能?
提前致謝!
對於問題的第二部分,您可以返回調整后的類型:
template <typename T>
class Class
{
T data;
public:
Class (const T& data) : data(data) {}
template <typename U>
auto operator+(const U &x) -> typename std::common_type<T, const U&>::type
// ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
{
return data + x;
}
};
int main()
{
Class<int> obj(10);
double x = obj + 12.5;
}
我希望我能很好地理解你的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.