gpt4 book ai didi

c++ - 让类(class)与运营商合作的更简单方法?

转载 作者:太空狗 更新时间:2023-10-29 20:34:04 26 4
gpt4 key购买 nike

在这里,我有一个名为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com