Как избежать лишнего копирования кода?
Я пытаюсь реализовать класс бинарной кучи с ее основными методами, но есть нюанс: с помощью шаблона хочу сделать 2 класса. Если подан false, будет куча, построенная вокруг максимума, если true - куча, построенная вокруг минимума (да, я хочу реализовать это именно с помощью шаблонов, в качестве учебного задания). Я хочу как можно больше избежать повторения кода при написании специализации false.
#include<iostream>
#pragma once
template<bool T>
class binaryHeap{
public:
binaryHeap();
~binaryHeap();
void insert(int);
int getMin();
void extractMin();
bool isEmpty();
private:
static const int none_val = -123;
void siftUp(int);
void siftDown(int);
int* a;
int size_;
};
Я пытаюсь провернуть это так (да, пока что это пустой класс):
template<>
class binaryHeap<false>: public binaryHeap<true>{
};
Собственно, вопрос: как унаследоваться так, чтобы методы binaryHeap<true>::binaryHeap()
и binaryHeap<true>::~binaryHeap()
совпадали с теми же в binaryHeap<false>
, не пиша идентичного кода, или это невозможно реализовать?
P.S Методы для полной специализации true уже реализованы в отдельном .cpp
файле, включая binaryHeap()
и ~binaryHeap()
P.P.S может, как-то прикрутить виртуальные конструктор и деструктор?