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;
}
 
    