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