非 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();
これはトリックを行いますが、過度に複雑に見えます。
編集: コードはリファクタリングされており、最終的には 1 つの機能のみが残ることを言及する必要があります。
const IProcess& getProcess() const
ただし、現時点では副作用があり、const 呼び出しが IProcess の別のインスタンスを返す場合があります。
話題をそらしてください。