0

我在 C++ 中创建了一个类,它具有用于unsigned shortsigned short`const char*等的构造函数。我想为所有这些类重载运算符。最有效的方法是什么?我真的需要为每个运算符和每种类型编写一个函数还是可以使用一些魔法?

我想重载新类型的变量可以在其他类型的左侧或右侧的情况。另外,我想调整一些类型,例如如果我添加float、double 或Float,新类型Int 必须返回新类型Float。如果没有为每种类型手动编写函数,这一切都可能吗?

提前致谢!

4

1 回答 1

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;
}

我希望我能很好地理解你的问题

于 2013-05-24T15:20:06.433 回答