我在C ++中创建了一个类,它包含unsigned short
,signed short
,`const char*
等的构造函数。我想为所有这些类重载运算符。最有效的方法是什么?我是否真的需要为每个操作符和每种类型编写一个函数,或者可以使用一些魔法?
我想过载新类型变量可以从其他类型向左或向右的情况。另外,我想调整一些类型,例如如果我添加float,double或Float,则new类型Int必须返回新类型Float。如果不为每种类型手动编写函数,这一切都可能吗?
提前致谢!
答案 0 :(得分:1)
对于问题的第二部分,您可以返回调整后的类型:
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;
}
我希望我理解你的问题