Bonsoir,
J’ai un problème de design en C++ et je ne sais pas par quel bout le prendre.
Voici en gros l’idée :
class OptimizationModel {
public:
virtual TypeIterateurSurEntiers get_equality_constraints() const = 0;
};
class ScaledModel: public OptimizationModel {
public:
TypeIterateurSurEntiers get_equality_constraints() const override;
};
class EqualityConstrainedModel: public OptimizationModel {
public:
TypeIterateurSurEntiers get_equality_constraints() const override;
};
J’ai une classe abstraite qui définit une fonction membre qui sera implémentée par plusieurs sous-classes. Cette fonction retourne un itérateur sur entiers, de telle sorte que je peux l’appeler dans une "range-based for loop" :
for (size_t constraint_index: problem.get_equality_constraints()) {
...
}
Suivant la sous-classe (ScaledModel ou EqualityConstrainedModel), j’aimerais pouvoir retourner un itérateur sur un container classique (par exemple std::vector<size_t>) ou bien mon propre type itérable (dans ce genre) pour éviter les allocations dynamiques.
Existe-t-il une technique en C++<=17 qui permette de faire cela ?
Merci d’avance,
Charlie
+0
-0