Я знаю, что нельзя использовать шаблоны для виртуальных методов в C++ (или наоборот), как, например, обсуждались here и here. К сожалению, я не уверен, как справиться с этим ограничением в моем случае.Наличие виртуальных методов в качестве шаблонов, которые принимают итераторы
У нас есть шаблон класса, который включает в себя шаблон метода:
template <class T>
class BeliefSet : public Belief<T>
{
private:
std::vector<T> m_Facts;
public:
template <class Iter>
void SetFacts(Iter IterBegin, Iter IterEnd, bool Append = false)
{
if(!Append)
{
m_Facts.clear();
}
m_Facts.insert(m_Facts.end(), IterBegin, IterEnd);
}
};
Метод SetFacts()
должен иметь возможность получить два входных итераторы для контейнера STL, поэтому мы используем шаблон метода здесь.
Теперь я хотел бы сделать этот метод SetFacts()
виртуальным, что невозможно в C++, как этот код написан на данный момент. Так что же еще типичный подход для решения этой ситуации?
Что вы пытаетесь достичь? Звучит как проблема XY –
@VittorioRomeo Я хочу предоставить функцию 'virtual', которая должна позволять добавлять mutliple значения контейнера STL во внутренний вектор' m_Facts'. – Matthias