Я использую массив в программе простого логического симулятора, и я хочу переключиться на использование вектора, чтобы изучить его, но ссылка, которую я использую "ООП в C ++ от Lafore", не имеет большого отношения к векторам и объектам, поэтомуЯ вроде как потерян.
Вот предыдущий код:
gate* G[1000];
G[0] = new ANDgate() ;
G[1] = new ORgate;
//gate is a class inherited by ANDgate and ORgate classes
class gate
{
.....
......
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
}
Теперь я хочу сделать
vector(gate*) G;
ANDgate a
G.push_back(a); //Error
ORgate o
G.push_back(o); //Error
for(...;...;...)
{
G[i]->Run(); //Will this work if I corrected the error ??
}
, поэтому векторный массив может содержать разныетипы объектов (ANDgate, ORgate), но они наследуют тип векторного массива (gate) ????