C++ 在C+中实现一个单调整数+;不必使基本运算符过载

C++ 在C+中实现一个单调整数+;不必使基本运算符过载,c++,operator-overloading,wrapper,C++,Operator Overloading,Wrapper,我想实现一个只随时间增加的整数类。因此,如果i是一个值为v的单调整数,则不能为其分配小于v的值。我可以使用一个重载=操作符的类来实现这一点,但我不想为int重新定义所有有用的操作符,比如+,-,+=,-=等等。有什么方法可以做到这一点吗?我不确定是否可以使用到int的转换或包装类您将必须重新定义运算符。 创建自定义类并仅定义支持所需功能的方法。比如说, class IncInt{ int m_value; public: explicit IncInt(int start)

我想实现一个只随时间增加的整数类。因此,如果
i
是一个值为
v
的单调整数,则不能为其分配小于
v
的值。我可以使用一个重载
=
操作符的类来实现这一点,但我不想为
int
重新定义所有有用的操作符,比如
+,-,+=,-=
等等。有什么方法可以做到这一点吗?我不确定是否可以使用到
int
的转换或
包装类

您将必须重新定义运算符。 创建自定义类并仅定义支持所需功能的方法。比如说,

class IncInt{

    int m_value;

public:
    explicit IncInt(int start) : m_value(start) {}
    const IncInt& operator=(const IncInt& obj)
    {
        if(this == &obj)
            return *this;

        if(obj.m_value > m_value)
            m_value = obj.m_value;
        return *this;
    }

    const IncInt& operator=(const int n)
    {
        if(n > m_value)
            m_value = n;
        return *this;
    }

    IncInt operator+(const int n) const
    {
        return IncInt(m_value + n);
    }

    // additional functions
};

你对
int&
施加的点就失去了这个限制。你必须重新定义几乎所有的运算符,否则防止这个数变小的唯一方法就是使它成为
const
使它成为const。当然,这并不能达到目标,因为我想增加它。有一些库可以使这更容易。加油。接线员曾经是我最喜欢的人。谢谢!我正在寻找本机数据类型的boost包装器。你能通过展示一个如何在boost中实现的例子来回答这个问题吗?我该怎么做才能使下面的代码正常工作(关键是我不想定义所有的基本运算符,但仍然使用它们);初期b(7);a=b+3;将强制转换定义为整数是否始终有效?您需要定义操作
IncInt+int
,它才能工作。根本没有办法告诉C++处理一个与它不同的整数。我添加了
初始操作符+(const int n)const
。我尝试定义强制转换为int操作符:`operator int(){return m_value;}
。然后
a=b+3`起作用。但是,你是对的。似乎我必须定义要使用的运算符。