Restreindre paramètre template à une famille de classes
Bonjour,
Je travaille sur un lecteur de CSV (CSV_reader) ligne par ligne, sans analyse, où l'exploitation des données est faite à part par l'implémentation d'une interface (Row_translator).
J'aimerais donc restreindre mon template CSV_reader aux classes dérivées de CSV_translator, afin d'appeler la méthode adaptée translate_row() à chaque lecture de ligne. Je tâtonne, et je n'arrive pas à faire taire mon compilateur.
Une idée ? Au fait, je suis au début de la conception, si vous avez une meilleure idée pour faire ce que je veux...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class CSV_reader;
class CSV_reader::Row_translator;
template <class Translator : public Row_translator>
class CSV_reader : public CSVFile {
std::ifstream m_csv;
public:
class Row_translator {
public:
virtual void translate_row(Row const &) = 0;
};
explicit CSV_reader(std::string path) : m_csv(path.c_str()) {}
void read(std::vector<Translator>&);
}; |
J'ai essayé de profiter du polymorphisme sans template, mais sans succès :/
Merci d'avance.
Cordialement,
Kidpaddle2