поменять в этом месте на CPositionVirtualAgent было бы слишком просто )
Иногда нужно будет отсылать в CPAway и родителя
Разве разрешение не должно происходить автоматически?
поменять в этом месте на CPositionVirtualAgent было бы слишком просто )
Иногда нужно будет отсылать в CPAway и родителя
Разве разрешение не должно происходить автоматически?
Да. Не совсем вкурил.
А вы в курсе, что два конструктора вызывается - CPositionVirtualAgent() и CPositionAgent()?
И еще остается два не удаленных объекта.
Да. Не совсем вкурил.
А вы в курсе, что два конструктора вызывается - CPositionVirtualAgent() и CPositionAgent()?
И еще остается два не удаленных объекта.
в курсе, да ) Реплицировалось на скорую руку из бОльшего кода
Пока я виртуализировал метод в родителе, сделал два потомка и самолет полетел
Но ведь должно ж разрешение срабатывать, нет?
class CPAway; class CPositionAgent { public: string meName; CPAway *meCPAway; virtual int getStep() {return NULL;}; }; class CPositionAgentReal : public CPositionAgent { public: CPositionAgentReal::CPositionAgentReal() { meName = "CPositionAgent"; meCPAway = new CPAway(&this); } int getStep() { return 1; } }; class CPositionVirtualAgent : public CPositionAgent { public: CPositionVirtualAgent::CPositionVirtualAgent() { meName = "CPositionVirtualAgent"; meCPAway = new CPAway(&this); } int getStep() { return -1; } }; class CPAway { public: CPositionAgent *mePA; string meName; CPAway::CPAway(CPositionAgent *inPA) { meName = "CPAway"; mePA = inPA; } void CPAway::setPAWay() { int lStep; lStep = mePA.getStep(); Print(lStep); } }; void OnStart() { CPositionVirtualAgent *lCPVA; lCPVA = new CPositionVirtualAgent(); lCPVA.meCPAway.setPAWay(); delete lCPVA; }
Просто добавьте virtual куда надо и все.
class CPositionAgent { public: string meName; CPAway *meCPAway; CPositionAgent::CPositionAgent() { meName = "CPositionAgent"; meCPAway = new CPAway(&this); } virtual int CPositionAgent::getStep() { return 1; } };
Просто добавьте virtual куда надо и все.
Спасибо!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
В приведенном коде
строка lCPVA.meCPAway.setPAWay() приводит к выполнению метода int CPositionAgent::getStep()
Цель же, вызвать метод int CPositionVirtualAgent::getStep()
Вопрос, что я не учитываю? Ведь экземпляр класса CPAway содержит объект CPositionVirtualAgent, почему же вызывается метод его родителя?