Учитывая следующие классы:Наследование, способствуют базовые члены класса
template <typename DataType, size_t Dimensions>
class Vector : public std::array<DataType, Dimensions> {
//stuff
};
template <typename DataType>
class Vector2 : public Vector<DataType, 2> {
//2d specific stuff
};
template <typename DataType, size_t Dimensions>
class Line {
public:
Vector<DataType, Dimensions>& min();
Vector<DataType, Dimensions>& max();
private:
Vector<DataType, Dimensions> m_min;
Vector<DataType, Dimensions> m_max;
};
template <typename DataType>
class Line2 : public Line<DataType, 2> {
//2d specific stuff
};
Какой самый лучший способ иметь min()
и max()
при вызове на Line2
, вернуть Vector2&
, а не Vector&
? Могу ли я продвигать m_min
и m_max
до Vector2
в пределах Line2
? Или иначе переопределить их и по-прежнему иметь функцию базового класса Line
?
Частичная специализация по шаблону. – aaronman
Почему 'Line2' даже нужно унаследовать от' Line', если у них есть несовместимые внешние интерфейсы? – millimoose
У меня было это как частичная специализация по шаблону, но было много повторного кода. Должны ли они совместно использовать базовый класс impl? – OmnipotentEntity