il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
J'ai essaye de declarer une variable privee template qui puisse
contenir n'importe quel type de container :
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
mais le compilo n'apprecie pas trop :-(
existe t'il une maniere de faire une class poly-container ?
il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
J'ai essaye de declarer une variable privee template qui puisse
contenir n'importe quel type de container :
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
mais le compilo n'apprecie pas trop :-(
existe t'il une maniere de faire une class poly-container ?
il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
J'ai essaye de declarer une variable privee template qui puisse
contenir n'importe quel type de container :
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
mais le compilo n'apprecie pas trop :-(
existe t'il une maniere de faire une class poly-container ?
bonjour,
il me faut creer une class qui puisse gerer plusieurs type de container
de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
[...]
mais le compilo n'apprecie pas trop :-(
existe t'il une maniere de faire une class poly-container ?
Je ne crois pas...
bonjour,
il me faut creer une class qui puisse gerer plusieurs type de container
de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
[...]
mais le compilo n'apprecie pas trop :-(
existe t'il une maniere de faire une class poly-container ?
Je ne crois pas...
bonjour,
il me faut creer une class qui puisse gerer plusieurs type de container
de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
[...]
mais le compilo n'apprecie pas trop :-(
existe t'il une maniere de faire une class poly-container ?
Je ne crois pas...
sentenza wrote in
news:3fd5817f$0$6972$:il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
sentenza <sentenza9@club-internet.fr> wrote in
news:3fd5817f$0$6972$7a628cd7@news.club-internet.fr:
il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.
existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
sentenza wrote in
news:3fd5817f$0$6972$:il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
sentenza wrote in
news:3fd5817f$0$6972$:il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
Aucun sens pour un std::map- Pop() : enleve le premier element de la pile.
Voir remarque précédente- Add() : additionne tous les elements de la pile
- Sub(), ...
std::transform, std::accumulate ou std::for_each ?mon probleme est comment gerer les different container STL dans une
class.
J'ai essaye de declarer une variable privee template qui puisse
contenir n'importe quel type de container :
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
mais le compilo n'apprecie pas trop :-(
Si je me souviens bien :
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
sentenza <sentenza9@club-internet.fr> wrote in
news:3fd5817f$0$6972$7a628cd7@news.club-internet.fr:
il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
Aucun sens pour un std::map
- Pop() : enleve le premier element de la pile.
Voir remarque précédente
- Add() : additionne tous les elements de la pile
- Sub(), ...
std::transform, std::accumulate ou std::for_each ?
mon probleme est comment gerer les different container STL dans une
class.
J'ai essaye de declarer une variable privee template qui puisse
contenir n'importe quel type de container :
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
mais le compilo n'apprecie pas trop :-(
Si je me souviens bien :
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.
existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
sentenza wrote in
news:3fd5817f$0$6972$:il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
Aucun sens pour un std::map- Pop() : enleve le premier element de la pile.
Voir remarque précédente- Add() : additionne tous les elements de la pile
- Sub(), ...
std::transform, std::accumulate ou std::for_each ?mon probleme est comment gerer les different container STL dans une
class.
J'ai essaye de declarer une variable privee template qui puisse
contenir n'importe quel type de container :
template<class T>
class MaClass
{
private :
<T<int>> _ma_pile;
};
mais le compilo n'apprecie pas trop :-(
Si je me souviens bien :
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
moi je compil sous NetBSD avec g++ .. mais il naccepte pas
template <class <typename> C, typename E >
ca doit surement etre a cause du compilo. je vais essayer sous Visual
pour voir
moi je compil sous NetBSD avec g++ .. mais il naccepte pas
template <class <typename> C, typename E >
ca doit surement etre a cause du compilo. je vais essayer sous Visual
pour voir
moi je compil sous NetBSD avec g++ .. mais il naccepte pas
template <class <typename> C, typename E >
ca doit surement etre a cause du compilo. je vais essayer sous Visual
pour voir
sentenza wrote in
news:3fd5aa99$0$6968$:moi je compil sous NetBSD avec g++ .. mais il naccepte pas
template <class <typename> C, typename E >
ca doit surement etre a cause du compilo. je vais essayer sous Visual
pour voir
Pardon, je me suis trompé. La bonne syntaxe est :
template <template <typename> class C, typename E>
class MC {
C<E> c_;
};
Et il y a assez peu de chances que cela marche avec VC++ (6) contrairement
à GCC.
sentenza <sentenza9@club-internet.fr> wrote in
news:3fd5aa99$0$6968$7a628cd7@news.club-internet.fr:
moi je compil sous NetBSD avec g++ .. mais il naccepte pas
template <class <typename> C, typename E >
ca doit surement etre a cause du compilo. je vais essayer sous Visual
pour voir
Pardon, je me suis trompé. La bonne syntaxe est :
template <template <typename> class C, typename E>
class MC {
C<E> c_;
};
Et il y a assez peu de chances que cela marche avec VC++ (6) contrairement
à GCC.
sentenza wrote in
news:3fd5aa99$0$6968$:moi je compil sous NetBSD avec g++ .. mais il naccepte pas
template <class <typename> C, typename E >
ca doit surement etre a cause du compilo. je vais essayer sous Visual
pour voir
Pardon, je me suis trompé. La bonne syntaxe est :
template <template <typename> class C, typename E>
class MC {
C<E> c_;
};
Et il y a assez peu de chances que cela marche avec VC++ (6) contrairement
à GCC.
Le Tue, 09 Dec 2003 11:15:58 +0100, dans fr.comp.lang.c++,
Luc Hermitte a dit :sentenza wrote in
news:3fd5817f$0$6972$:il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
Tu fait une template qui agrège un containeur de la stl. Tu fait de la
specialisation partiel pour certains types qui posent des problèmes.
Ou tu crees d'autres classes spécialisées.
Et tu fait tout dériver d'une même interface.
Ensuite tu travailles uniquement avec une enveloppe.
tmplatee <typename T>
class Container
{
public:
virtual void Add(const T & value) = 0;
virtual void Sub(const T & value) = 0;
virtual void Pop() = 0;
};
template<typename ContainerType>
class StlAdaptor : public Container<typename ContainerType::value_type>
{
public:
typedef typename ContainerType::value_type ValueType;
public:
explicit StlAdaptor(ContainerType* container):m_container(container){}
virtual void Add(const ValueType & value) { m_container->push_back(value); }
virtual void Sub(const ValueType & value) {
typename ContainerType::iterator it = find(m_container->begin(),
m_container->end(), value);
if (it != m_container->end()) m_container->erase(it);
}
virtual void Pop() { m_container->pop_back();}
private:
ContainerType* m_container;
};
template<typename ContainerType>
class StlAdaptorSet
: public Container<typename ContainerType::value_type>
{
public:
typedef typename ContainerType::value_type ValueType;
public:
explicit StlAdaptorSet(ContainerType* container):m_container(container){}
virtual void Add(const ValueType & value) { m_container->insert(value); }
virtual void Sub(const ValueType & value) {
typename ContainerType::iterator it = find(m_container->begin(),
m_container->end(), value);
if (it != m_container->end()) m_container->erase(it);
}
virtual void Pop() { assert(0 && "not implemented"); }
private:
ContainerType* m_container;
};
template<typename T>
class MaClass
{
public:
explicit MaClass(std::list<T> * stlContainer)
:m_container(new StlAdaptor< std::list<T> >(stlContainer)){ }
explicit MaClass(std::set<T> * stlContainer)
:m_container(new StlAdaptorSet< std::set<T> >(stlContainer)){ }
explicit MaClass(std::vector<T> * stlContainer)
:m_container(new StlAdaptor< std::vector<T> >(stlContainer)){ }
void Add(const T & value) { m_container->Add(value); }
void Sub(const T & value) { m_container->Sub(value); }
void Pop() { m_container->Pop(); }
private:
std::auto_ptr< Container<T> > m_container;
};
void test()
{
std::vector<int> v;
std::list<int> l;
std::set<int> s;
MaClass<int> a(&v);
MaClass<int> b(&l);
MaClass<int> c(&s);
std::list<MaClass<int>*> maClassList;
std::for_each(maClassList.begin(), maClassList.end(),
std::bind2nd(std::mem_fun(&MaClass<int>::Add), 4));
}
Le Tue, 09 Dec 2003 11:15:58 +0100, dans fr.comp.lang.c++,
Luc Hermitte a dit :
sentenza <sentenza9@club-internet.fr> wrote in
news:3fd5817f$0$6972$7a628cd7@news.club-internet.fr:
il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.
existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
Tu fait une template qui agrège un containeur de la stl. Tu fait de la
specialisation partiel pour certains types qui posent des problèmes.
Ou tu crees d'autres classes spécialisées.
Et tu fait tout dériver d'une même interface.
Ensuite tu travailles uniquement avec une enveloppe.
tmplatee <typename T>
class Container
{
public:
virtual void Add(const T & value) = 0;
virtual void Sub(const T & value) = 0;
virtual void Pop() = 0;
};
template<typename ContainerType>
class StlAdaptor : public Container<typename ContainerType::value_type>
{
public:
typedef typename ContainerType::value_type ValueType;
public:
explicit StlAdaptor(ContainerType* container):m_container(container){}
virtual void Add(const ValueType & value) { m_container->push_back(value); }
virtual void Sub(const ValueType & value) {
typename ContainerType::iterator it = find(m_container->begin(),
m_container->end(), value);
if (it != m_container->end()) m_container->erase(it);
}
virtual void Pop() { m_container->pop_back();}
private:
ContainerType* m_container;
};
template<typename ContainerType>
class StlAdaptorSet
: public Container<typename ContainerType::value_type>
{
public:
typedef typename ContainerType::value_type ValueType;
public:
explicit StlAdaptorSet(ContainerType* container):m_container(container){}
virtual void Add(const ValueType & value) { m_container->insert(value); }
virtual void Sub(const ValueType & value) {
typename ContainerType::iterator it = find(m_container->begin(),
m_container->end(), value);
if (it != m_container->end()) m_container->erase(it);
}
virtual void Pop() { assert(0 && "not implemented"); }
private:
ContainerType* m_container;
};
template<typename T>
class MaClass
{
public:
explicit MaClass(std::list<T> * stlContainer)
:m_container(new StlAdaptor< std::list<T> >(stlContainer)){ }
explicit MaClass(std::set<T> * stlContainer)
:m_container(new StlAdaptorSet< std::set<T> >(stlContainer)){ }
explicit MaClass(std::vector<T> * stlContainer)
:m_container(new StlAdaptor< std::vector<T> >(stlContainer)){ }
void Add(const T & value) { m_container->Add(value); }
void Sub(const T & value) { m_container->Sub(value); }
void Pop() { m_container->Pop(); }
private:
std::auto_ptr< Container<T> > m_container;
};
void test()
{
std::vector<int> v;
std::list<int> l;
std::set<int> s;
MaClass<int> a(&v);
MaClass<int> b(&l);
MaClass<int> c(&s);
std::list<MaClass<int>*> maClassList;
std::for_each(maClassList.begin(), maClassList.end(),
std::bind2nd(std::mem_fun(&MaClass<int>::Add), 4));
}
Le Tue, 09 Dec 2003 11:15:58 +0100, dans fr.comp.lang.c++,
Luc Hermitte a dit :sentenza wrote in
news:3fd5817f$0$6972$:il me faut creer une class qui puisse gerer plusieurs type de
container de la lib STL (stack, vector, et map).
Je dois implementer les methodes :
- Push(val) : ajoute un element en haut de la pile.
- Pop() : enleve le premier element de la pile.
- Add() : additionne tous les elements de la pile
- Sub(), ...
mon probleme est comment gerer les different container STL dans une
class.
template <class <typename> C, typename E >
class TaClasse {
C<E> ta_pile_;
public:
...
};
Par contre, tous les compilateurs ne supportent pas cette écriture.existe t'il une maniere de faire une class poly-container ?
C'est loin d'être un problème simple. Tous les containers sont loins
d'être équivalents -- par rapport aux fonctions qu'ils proposent, leur
mode de fonctionnement, ... et surtout leur raison d'être.
Tu seras très certainement interressé par le second Item traité dans
"Effective STL" (par Scott Meyers, publié chez Addisson Wesley) qui
s'intitule justement "Beware the illusion of container-independent code".
Parmi les approches qui restent le plus container-independant, il y a les
algorithmes de la STL qui itèrent sur des plages d'éléments.
Tu fait une template qui agrège un containeur de la stl. Tu fait de la
specialisation partiel pour certains types qui posent des problèmes.
Ou tu crees d'autres classes spécialisées.
Et tu fait tout dériver d'une même interface.
Ensuite tu travailles uniquement avec une enveloppe.
tmplatee <typename T>
class Container
{
public:
virtual void Add(const T & value) = 0;
virtual void Sub(const T & value) = 0;
virtual void Pop() = 0;
};
template<typename ContainerType>
class StlAdaptor : public Container<typename ContainerType::value_type>
{
public:
typedef typename ContainerType::value_type ValueType;
public:
explicit StlAdaptor(ContainerType* container):m_container(container){}
virtual void Add(const ValueType & value) { m_container->push_back(value); }
virtual void Sub(const ValueType & value) {
typename ContainerType::iterator it = find(m_container->begin(),
m_container->end(), value);
if (it != m_container->end()) m_container->erase(it);
}
virtual void Pop() { m_container->pop_back();}
private:
ContainerType* m_container;
};
template<typename ContainerType>
class StlAdaptorSet
: public Container<typename ContainerType::value_type>
{
public:
typedef typename ContainerType::value_type ValueType;
public:
explicit StlAdaptorSet(ContainerType* container):m_container(container){}
virtual void Add(const ValueType & value) { m_container->insert(value); }
virtual void Sub(const ValueType & value) {
typename ContainerType::iterator it = find(m_container->begin(),
m_container->end(), value);
if (it != m_container->end()) m_container->erase(it);
}
virtual void Pop() { assert(0 && "not implemented"); }
private:
ContainerType* m_container;
};
template<typename T>
class MaClass
{
public:
explicit MaClass(std::list<T> * stlContainer)
:m_container(new StlAdaptor< std::list<T> >(stlContainer)){ }
explicit MaClass(std::set<T> * stlContainer)
:m_container(new StlAdaptorSet< std::set<T> >(stlContainer)){ }
explicit MaClass(std::vector<T> * stlContainer)
:m_container(new StlAdaptor< std::vector<T> >(stlContainer)){ }
void Add(const T & value) { m_container->Add(value); }
void Sub(const T & value) { m_container->Sub(value); }
void Pop() { m_container->Pop(); }
private:
std::auto_ptr< Container<T> > m_container;
};
void test()
{
std::vector<int> v;
std::list<int> l;
std::set<int> s;
MaClass<int> a(&v);
MaClass<int> b(&l);
MaClass<int> c(&s);
std::list<MaClass<int>*> maClassList;
std::for_each(maClassList.begin(), maClassList.end(),
std::bind2nd(std::mem_fun(&MaClass<int>::Add), 4));
}