I want a function that receives a vector with elements of the base class and executes the method of the corresponding inherited class. I don't know if I should define a virtual function in the base class. Anyway it can't be a pure virtual function as long as I don't want the inherited classes to be abstract.
class A {
public:
void printSubclass() {
std::cout << "No subclass found";
}
};
class B : public A {
public:
void printSubclass() {
std::cout << "Subclass B";
}
};
class C : public A {
public:
void printSubclass() {
std::cout << "Subclass C";
}
};
void function(vector<A> MyVec) {
for(int k=0; k<Myvec.size(); k++)
MyVec[k].printSubclass();
}
int main() {
B ObjB;
C ObjC;
vector<A> MyVector= {ObjB, ObjC}
function(ObjB);
return 0;
}