Salut j'ai posé une question aujourd'hui de savoir Comment insérer différents types d'objets dans le même tableau de vecteurs et mon code en question
gate* G[1000];
G[0] = new ANDgate() ;
G[1] = new ORgate;
//gate is a class inherited by ANDgate and ORgate classes
class gate
{
.....
......
virtual void Run()
{ //A virtual function
}
};
class ANDgate :public gate
{.....
.......
void Run()
{
//AND version of Run
}
};
class ORgate :public gate
{.....
.......
void Run()
{
//OR version of Run
}
};
//Running the simulator using overloading concept
for(...;...;..)
{
G[i]->Run() ; //will run perfectly the right Run for the right Gate type
}
et je voulais utiliser des vecteurs donc, quelqu'un a écrit que je dois faire :
std::vector<gate*> G;
G.push_back(new ANDgate);
G.push_back(new ORgate);
for(unsigned i=0;i<G.size();++i)
{
G[i]->Run();
}
mais alors qu'il et beaucoup d'autres ont suggéré que je serais mieux utiliser Boost pointeur de conteneurs
ou shared_ptr
. J'ai passé les 3 dernières heures de lecture sur ce sujet, mais la documentation semble assez avancé pour moi . **Quelqu'un peut-il me donner un petit exemple de code d' shared_ptr
d'utilisation et pourquoi ils ont suggéré l'utilisation d' shared_ptr
. Aussi existe-il d'autres types, comme ptr_vector
, ptr_list
et ptr_deque
**
Edit1: j'ai lu un exemple de code en trop, ce qui comprend:
typedef boost::shared_ptr<Foo> FooPtr;
.......
int main()
{
std::vector<FooPtr> foo_vector;
........
FooPtr foo_ptr( new Foo( 2 ) );
foo_vector.push_back( foo_ptr );
...........
}
Et je ne comprends pas la syntaxe!