I am new to C++, but I was under the impression that virtual in C++ was the equivalent of abstract in Java. I have the following:
//A.h
class A {
public:
    void method();
protected:
    virtual void helper();
}
With the following cpp:
//A.cpp
#include "A.h"
void A::methodA() {
    //do stuff
    helper();
}
Then here's the derived class:
//B.h
#include "A.h"
class B: public A{
private:
    void helper2();
}
and the following derived cpp:
//B.cpp
#include "B.h"
void B::helper2() {
    //do some stuff
} 
void A::helper() {
    helper2();
}
However, the compiler does not seem to like that I am calling the helper2 method defined in the derived class, within a virtual method defined in the super class. It gives the error "error: ‘helper2’ was not declared in this scope". Is this not how I am supposed to use virtual methods?  
Btw I can't use the keyword override. 
 
     
    