我需要从一个非const对象中调用一个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实例。
请保持主题。