c++ шаблоны и абстрактные классы
допустим, мой код выглядит примерно так:
Код:
class Abstract
{
virtual int getValue() = 0;
}
class Concrete1 : public Abstract
{
int getValue()
{
//вычисления
}
}
class Concrete2: public Abstract
{
int getValue()
{
//вычисления
}
}
class Container
{
std::vector<Abstract*> _objects;
public:
void push(Abstract *obj)
{
if(obj->getValue > SOME_VALUE)
{
_objects.push_back(obj);
}
}
Abstract* pop()
{
//еще код
}
std::vector<Abstract*> getByvalue(int val)
{
//формирование нового вектора на основе условий и его возврат
}
}
{
virtual int getValue() = 0;
}
class Concrete1 : public Abstract
{
int getValue()
{
//вычисления
}
}
class Concrete2: public Abstract
{
int getValue()
{
//вычисления
}
}
class Container
{
std::vector<Abstract*> _objects;
public:
void push(Abstract *obj)
{
if(obj->getValue > SOME_VALUE)
{
_objects.push_back(obj);
}
}
Abstract* pop()
{
//еще код
}
std::vector<Abstract*> getByvalue(int val)
{
//формирование нового вектора на основе условий и его возврат
}
}
ps.я только начал изучать c++, отсюда и такие может быть очевидные вопросы.
У вас есть абстрактный класс, у вас есть контейнер для абстрактного класса, внутри которого вы используете интерфейс этого абстрактного класса. Зачем шаблон? Сделайте необходимые методы виртуальными и все - будет контейнер для абстрактного класса и всех его конкретных наследников.