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

标签 c++ class operator-keyword

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

相关文章:

c++ - Eclipse CDT 将 static_assert(cond) 突出显示为语法错误

c++ - 使成员函数中的静态变量独立于每个实例

c++ - 在 C++ 中调用类中的运算符函数

c++ - 为自己的流类重载插入运算符

c++ - 如何让 UI 对象仅在单击按钮后出现在对话框中

c++ - c++中的引用解释

c++ - QtCreator 与信号和槽

java - 如何在 Java 中模拟可在运行时扩展的枚举?

javascript - 段落上的 ckeditor 类未被识别

c++ - 与关系运算符的字符串比较(不同长度)