我有一个收集器的类,有两种方法,例如:
bool MyCollectorChanged() const;
bool MyCollectorDoSomeOperation() const;
我无法更改这些方法的签名,这意味着我无法从签名中删除const
。
我想在某些情况下在MyCollectorChanged()
设置/取消设置一些标记,因此我可以检查MyCollectorDoSomeOperation()
中的标记值。
向该类添加成员标志将不起作用,因为MyCollectorChanged()
是一种const方法,因此我无法更改MyCollectorChanged()
内的成员标记。
有选择吗?如何设置/取消设置MyCollectorChanged()
内的某些标记,以便在MyCollectorDoSomeOperation()
内显示?
答案 0 :(得分:4)
选项1
如果您可以选择更改private
成员变量的属性,则可以将其中一些变为mutable
。然后,您将能够在const
成员函数中更改其值。
有关详细信息,请参阅http://en.cppreference.com/w/cpp/language/cv。
选项2
如果您可以选择使用Pimpl idiom,则可以更改class/struct
中代表主class
数据的任何成员变量的值。