C'est un assez basique C++ question de conception:Comment fournir de nombreux constructeurs, mais sans trop de dépendances?
J'ai une classe qui contient des données qui sont en lecture seule, une fois que l'objet est construit:
class Foo {
private:
class Impl;
Impl* impl_;
public:
int get(int i); // access internal data elements
};
Maintenant, je voudrais mettre en œuvre plusieurs façons de construire un objet Foo
et de le remplir avec des données: à partir de std::istream
, à partir d'un itérateur, d'un vecteur, etc. Quelle est la meilleure façon de l'implémenter?
Je peux ajouter tous ces constructeurs directement dans Foo
, mais je ne veux pas vraiment l'utilisateur Foo
d'avoir à inclure std::istream
etc. Je suis aussi inquiet au sujet des classes contenant trop de code.
Quelle est la manière la plus idiomatique de le faire? Je suppose, ajouter une fonction privée addElement
, puis définir les fonctions d'usine amis qui créent Foo
objets en lisant les données, en appelant addElement
et retourner l'objet construit? D'autres options?
Je pense que '' #include ce que l'on cherche (pour les flux à terme déclarant). –
UncleBens