Я понимаю , почему функции шаблона-члена не могут быть виртуальными , но я не уверен, какое решение лучше всего.
У меня есть код, похожий на этот:
struct Entity
{
template
virtual It GetChildren(It it) { return it; }
};
struct Person : public Entity
{
template
virtual It GetChildren(It it) { *it++ = "Joe"; }
};
struct Node : public Entity
{
Node left, right;
const char *GetName() { return "dummy"; }
template
virtual It GetChildren(It it)
{
*it++ = left.GetName();
*it++ = right.GetName();
return it;
}
};
Ясно, что мне нужна динамическая диспетчеризация. Но учитывая, что классы на самом деле довольно большие, я не хочу создавать шаблон для всего класса . И я все еще хочу поддерживать любой итератор.
Как лучше всего этого добиться?