После не работает:Как сделать вектор абстрактного класса шаблона
std::vector<IRule*> vec;
RuleRangeDouble *rule = new RuleRangeDouble(0, 100);
vec.push_back(rule);
Теперь как можно сделать вектор различных правил? Я знаю, я должен использовать указатели ... Но что еще мне нужно сделать, чтобы заставить это работать? Как я могу изменить свою базовую структуру, чтобы получить эту работу?
Я использую интерфейс как следующие:
// Interface
template <typename T>
class IRule
{
public:
virtual bool isValid(T value) = 0;
};
И мой пример класса выглядит следующим образом:
class RuleRangeDouble : public IRule<double>
{
private:
double min;
double max;
public:
bool isValid(double value)
{
....
};
};
Почему это не работает? Если 'RuleRangeDouble' происходит публично из« IRule », нет причин, по которым он не должен работать. –
@JamesKanze Это не так, как 'IRule' является шаблоном класса. – juanchopanza
@juanchopanza Я пропустил это. Если 'IRule' является шаблоном,' IRule * 'не является допустимым типом. –