在这里,我有一个名为 Value
的类,它可以简单地获取和设置 float
。
class Value
{
public:
Value(float f)
:f(f){};
float get()
{
return f;
}
void set(float f)
{
this->f = f;
}
private:
float f;
};
我希望我的类(class)能够像下面的例子那样工作。
Value value(3);
std::cout << value * 2 - 1 << std::endl; // -> 5
std::cout << value == 5 << std::endl; // -> true
value /= 2;
std::cout << value << std::endl; // -> 2.5
我应该手动将所有运算符方法添加到我的类中吗?
或者是否有任何更简单的解决方案将 Value
视为 float
?
最佳答案
您可以使用 conversion operator 而不是 get()
到 float
类型:
operator float() const { return f; }
如果您还想启用更改值的操作(例如 /=
),您可以使用类似的返回引用的非常量运算符,或者您可以手动添加这些运算符。
但是,如果您想要一个行为与 float
完全相同的类,最好使用 float
而不是 Value
完全上课。
关于c++ - 让类(class)与运营商合作的更简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51239390/