C++ c++;将标志添加到常量方法
我有一些用于收集器的类,有两种方法,例如:C++ c++;将标志添加到常量方法,c++,constants,C++,Constants,我有一些用于收集器的类,有两种方法,例如: bool MyCollectorChanged() const; bool MyCollectorDoSomeOperation() const; 我无法更改这些方法的签名,这意味着我无法从签名中删除const 对于某些情况,我想在MyCollectorChanged()中设置/取消设置一些标志,以便检查MyCollectorDoSomeOperation()中的标志值 向类中添加成员标志将不起作用,因为MyCollectorChanged()是一个
bool MyCollectorChanged() const;
bool MyCollectorDoSomeOperation() const;
我无法更改这些方法的签名,这意味着我无法从签名中删除const
对于某些情况,我想在MyCollectorChanged()
中设置/取消设置一些标志,以便检查MyCollectorDoSomeOperation()
中的标志值
向类中添加成员标志将不起作用,因为MyCollectorChanged()
是一个常量方法,因此我无法在MyCollectorChanged()
中更改成员标志
有没有这样做的选择?如何在
MyCollectorChanged()
中设置/取消设置某些标志,使其在MyCollectorDoSomeOperation()
中可见?选项1
如果您可以选择更改private
成员变量的属性,则可以使其中一些变量可变。然后,您将能够在const
成员函数中更改它们的值
有关更多信息,请参阅
选项2
如果可以选择使用,则可以更改表示主类的数据的类/struct
中任何成员变量的值
如果您可以选择更改private
成员变量的属性,则可以使其中一些变量可变。然后,您将能够在const
成员函数中更改它们的值
有关更多信息,请参阅
选项2
如果您可以选择使用,您将能够更改类/结构
中表示主类
数据的任何成员变量的值重载方法而不使用常量
?查看重载方法而不使用常量
的可能副本?查看通过删除重载方法的可能副本const
?它会工作吗?@CinCout,我想OP想要更新const
成员函数中的数据。同意。但超载是否也是实现同样目标的可能解决方案?要在non-const方法中设置/重置标志,并从non-const方法调用const
方法,以避免代码重复?@CinCout,如果在非const
对象上调用该函数,则该方法有效,但如果在const
对象上调用该函数,则该方法无效。通过删除const
来重载该方法如何?它会工作吗?@CinCout,我想OP想要更新const
成员函数中的数据。同意。但超载是否也是实现同样目标的可能解决方案?要在non-const方法中设置/重置标志,并从non-const方法调用const
方法以避免代码重复?@CinCout,如果在非const
对象上调用函数,则该方法有效,但如果在const
对象上调用函数,则该方法无效。