如何解决函数可能是 const 或不是 const 取决于参数
我正在尝试通过生成重复代码来重构一些代码。 让我们想象一下,我最终得到了这样一个类:
class A {
public:
void method1()
{
do_work(true);
}
void method2() const
{
do_work(false);
}
private:
void do_work(bool flag) {
...
if(flag)
this->data = 0;
}
}
然而,这不会编译,因为 do_work 不是 const,即使使用 flag = false 调用此方法是 const。 有没有办法在不再次拆分实现的情况下“修复”这个问题?
解决方法
do_work
重构得很差,作为一个“有时是常量”的函数。
将 const
和非常量逻辑分开。
class A {
void method1()
{
do_work();
this->data = 0;
}
void method2() const
{
do_work();
}
private:
void do_work() const {
...
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。