小编Chr*_*ris的帖子

从非const对象调用const函数

我需要从非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实例.

请继续主题.

c++ const function

21
推荐指数
3
解决办法
3万
查看次数

标签 统计

c++ ×1

const ×1

function ×1