У меня есть еще один вопрос по оформлению классов C ++. С декораторами меняю функцию virtual int get()
. Но в классе NP C я также вызываю функцию get()
, чтобы получить некоторые значения для расчета. Есть ли способ вызвать Elite :: get () внутри NP C. Я хочу получить 100, а не 10. Спасибо.
class AbstractNPC {
public:
virtual int get() = 0;
};
class NPC: public AbstractNPC {
public:
NPC() { }
int get(){ return 10; }
calc(){ int i = get(); }
};
class NPCDecorator: public AbstractNPC {
private:
AbstractNPC * npc;
public:
NPCDecorator(AbstractNPC *n) { npc = n; }
int get() { npc->get(); }
};
class Elite: public NPCDecorator {
public:
Elite(AbstractNPC *n): NPCDecorator(n) { }
int get() { return 100; }
};
Или есть способ получше? Может быть использование указателей на функции?