我需要从非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();
}
};
Run Code Online (Sandbox Code Playgroud)
调用
getProcess().doSomeWork();
Run Code Online (Sandbox Code Playgroud)
总是会打电话给
IProcess& getProcess()
Run Code Online (Sandbox Code Playgroud)
还有另一种方式来打电话
const IProcess& getProcess() const
Run Code Online (Sandbox Code Playgroud)
来自非常数成员函数?我到目前为止使用过
const_cast<const Bar*>(this)->getProcess().doSomeWork();
Run Code Online (Sandbox Code Playgroud)
这样做的技巧,但似乎过于复杂.
编辑:我应该提到代码正在重构,最终只剩下一个函数.
const IProcess& getProcess() const
Run Code Online (Sandbox Code Playgroud)
但是,目前存在副作用,并且const调用可能在某些时候返回不同的IProcess实例.
请继续主题.