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...
J'ai essayé de profiter du polymorphisme sans template, mais sans succès :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>&); };
Merci d'avance.
Cordialement,
Kidpaddle2
Partager