我需要从非常量对象调用 const 函数。查看示例
struct IProcess {
virtual bool doSomeWork() const = 0L;
};
class Foo : public IProcess {
virtual bool doSomeWork() const {
...
}
};
class Bar
{
public:
const IProcess& getProcess() const {return ...;}
IProcess& getProcess() {return ...;}
void doOtherWork {
getProcess().doSomeWork();
}
};
打电话
getProcess().doSomeWork();
总是会导致调用
IProcess& getProcess()
有没有别的方法可以打电话
const IProcess& getProcess() const
从非常量成员函数?到目前为止我用过
const_cast<const Bar*>(this)->getProcess().doSomeWork();
这可以解决问题,但似乎过于复杂。
编辑:我应该提到代码正在被重构,最终只剩下一个函数。
const IProcess& getProcess() const
但是,目前存在副作用,有时 const 调用可能会返回 IProcess 的不同实例。
请继续话题。