Я работаю над своей дочерью, пытаясь реализовать альтернативу для vtables, используя перечисления и тонну макромагии, которая действительно начинает путаться с моим мозгом. Я начинаю думать, что я не хожу по правильному пути, так как код становится более уродливым и уродливым, и не будет пригодным для производства любыми средствами.
Как можно реализовать шаблон следующего кода с наименьшим количеством перенаправления/операций?
Это должно быть сделано в стандартном С++, до 17.
class A{
virtual void Update() = 0; // A is so pure *¬*
};
class B: public A
{
override void Update() final
{
// DO B STUFF
}
}
class C: public A
{
override void Update() final
{
// DO C STUFF
}
}
// class...
int main()
{
std::vector<A*> vecA{};
// Insert instances of B, C, ..., into vecA
for(auto a: vecA) // This for will be inside a main loop
a->Update(); // Ridiculous amount of calls per unit of time
// Free memory
}
PS: Если перечисление, переключатель и макросы действительно лучший вариант, я думаю, я просто попытаюсь освежить свои кеши и придумать лучший дизайн.
PSS: Я знаю, что это микро-оптимизация... Черт, мне нужно нано или даже пико оптимизировать это (образно говоря), поэтому я просто проигнорирую любые утилитарные ответы, которые могут возникнуть.