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