J'ai une question rapide sur l'encapsulation des types spécifiques avec typedef
. Dire que j'ai une classe Foo
dont le constructeur prend une certaine valeur, mais je veux cacher le type spécifique en utilisant typedef
:Comment masquer complètement un type spécifique en utilisant typedef?
class Foo {
public:
typedef boost::shared_ptr< std::vector<int> > value_type;
Foo(value_type val) : val_(val) {}
private:
value_type val_;
};
Mais dans ce cas, la fonction principale doit encore connaître le type (donc il utilise explicitement std::vector<int>
):
int main() {
Foo::value_type val(new std::vector<int>());
val->push_back(123);
Foo foo(val);
return 0;
}
Comment puis-je résoudre ce problème tout en évitant une copie en profondeur du vecteur dans le constructeur Foo
?
Merci, en particulier l'opération 'swap()' est exactement ce dont j'ai besoin. – Frank