/// illustrating http://stackoverflow.com/a/99622/2932052
#include <iostream>
using namespace std;
class A
{
A *pThis;
public:
A()
: pThis(this)
{
}
void callFoo()
{
pThis->foo(); // call through the pThis ptr which was initialized in the constructor
}
virtual void foo() = 0;
};
class B : public A
{
public:
virtual void foo()
{
}
};
int main() {
// your code goes here
B b;
b.callFoo();
return 0;
}
Ly8vIGlsbHVzdHJhdGluZyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTYyMi8yOTMyMDUyCiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEKewogIEEgKnBUaGlzOwogIHB1YmxpYzoKICBBKCkKICAgOiBwVGhpcyh0aGlzKQogIHsKICB9CgogIHZvaWQgY2FsbEZvbygpCiAgewogICAgcFRoaXMtPmZvbygpOyAvLyBjYWxsIHRocm91Z2ggdGhlIHBUaGlzIHB0ciB3aGljaCB3YXMgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0cnVjdG9yCiAgfQoKICB2aXJ0dWFsIHZvaWQgZm9vKCkgPSAwOwp9OwoKY2xhc3MgQiA6IHB1YmxpYyBBCnsKcHVibGljOgogIHZpcnR1YWwgdm9pZCBmb28oKQogIHsKICB9Cn07CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCUIgYjsKCWIuY2FsbEZvbygpOwoJcmV0dXJuIDA7Cn0=