При обратном проектировании и использовании внешних классов я часто пытаюсь переопределить эти классы в моей библиотеке:
class GameEngine // Exported with "GetGameEngine"
{
public:
virtual void foo1() = 0;
virtual void foo2() = 0;
virtual void foo3() = 0;
virtual void foo4() = 0;
virtual void foo5() = 0;
virtual void foo6() = 0;
virtual void foo7() = 0;
virtual void foo8() = 0;
virtual void foo9() = 0;
virtual void foo10() = 0;
virtual void foo11() = 0;
virtual void foo12() = 0;
virtual int GetGameStatus() = 0; //0x30
virtual void foo14() = 0;
virtual void foo15() = 0;
virtual void foo16() = 0;
virtual int AnotherUsefulFunction() = 0; //0x40
};
Обычно я вызываю функцию GetGameStatus извне. Есть какая-то структура или возможность, которая позволяет мне написать это так:
class GameEngine // Exported with "GetGameEngine"
{
public:
FUNCTABLE(12);
virtual int GetGameStatus() = 0; //0x30
FUNCTABLE(14,16);
virtual int AnotherUsefulFunction() = 0; //0x40
};
Это сильно очистит мой код.