I am from Java and a bit new to C++. In Java I would have the possibility to do this: link to code
I create an abstract base class Mother, with one pure virtual function used in a public function of that same base class.
I tried this :
class Mother {
    private:
        virtual void bar() = 0;
    public:
        void foo();
};
void Mother::foo() {
    // ... some code
    bar();
}
class Child0: public Mother {
    private:
        void bar();
};
void Child0::bar() {
    std::cout << "Child0" << std::endl;
}
class Child1: public Mother {
    private:
        void bar();
};
void Child1::bar() {
    std::cout << "Child1" << std::endl;
}
// main code
int main() {
    Mother mother;
    if(condition) {
        Child0 child;
        mother = child;
    } else {
        Child1 child;
        mother = child;
    }
    mother.foo();
}
But I get a compiler error:
main.cpp:35:12: fatal error: variable type 'Mother' is an abstract class
    Mother mother;
           ^
main.cpp:5:22: note: unimplemented pure virtual method 'bar' in 'Mother'
        virtual void bar() = 0;
                     ^
What am I missing?
 
     
     
    