Вызов константной функции из неконстантного объекта
Мне нужно вызвать 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 может возвращать другой экземпляр IP-процесса в течение некоторого времени.
Пожалуйста, продолжайте тему.