【发布时间】:2010-09-29 06:10:18
【问题描述】:
我需要从非常量对象调用 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 实例。
请继续话题。
【问题讨论】: