Ce dont j'ai besoin, c'est de la hiérarchie de classes suivante (donnée ici sous forme de croquis) :
class DataClass {}
class AbstractGenerator {
public:
// Generates DataClass objects one by one. In a lazy manner
virtual DataClass produce() = 0;
}
class RandGenerator : AbstractGenerator {
public:
RandGenerator(int maximal_int) : maximal(maximal_int) {}
DataClass produce() {
// get a random number from 0 to this->maximal
// make a DataClass object from the random int and return it
}
private:
int maximal;
}
class FromFileGenerator : AbstractGenerator {
public:
FromFileGenerator(string file_name) : f_name(file_name) {}
DataClass produce() {
// read the next line from the file
// deserialize the DataClass object from the line and return it
}
private:
string f_name;
}
Ce que je veux soutenir pour les deux RandGenerator
y FromFileGnerator
est :
RandGenerator rg();
for (DataClass data : rg) {...}
Et aussi une méthode pour prendre "les n premiers éléments du générateur".
Quels sont les outils appropriés dans le C++11 ordinaire que l'on pourrait utiliser pour réaliser cela, ou ce qui s'en rapproche le plus dans le C++11 ?