#include <iostream>
class Base
{
public:
typedef int func_t (int x);
virtual func_t function = 0;
virtual int function2(int x) = 0;
};
class Derived : public Base
{
public:
func_t function;
int function2 (int x);
};
int Derived::function(int x)
{
return x;
}
int Derived::function2(int x)
{
return x;
}
int main()
{
Base * theClass = new Derived();
std::cout << theClass->function(1) << std::endl;
std::cout << theClass->function2(2) << std::endl;
delete theClass;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQmFzZQp7CnB1YmxpYzoKCgl0eXBlZGVmIGludCBmdW5jX3QgKGludCB4KTsKCQoJdmlydHVhbCBmdW5jX3QgZnVuY3Rpb24gPSAwOwoKICAgIHZpcnR1YWwgaW50IGZ1bmN0aW9uMihpbnQgeCkgPSAwOwp9OwoKY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlCnsKcHVibGljOgogICAgZnVuY190IGZ1bmN0aW9uOwogICAgaW50IGZ1bmN0aW9uMiAoaW50IHgpOwp9OwoKaW50IERlcml2ZWQ6OmZ1bmN0aW9uKGludCB4KQp7CglyZXR1cm4geDsKfQoKaW50IERlcml2ZWQ6OmZ1bmN0aW9uMihpbnQgeCkKewogICAgcmV0dXJuIHg7Cn0KCmludCBtYWluKCkKewoJQmFzZSAqIHRoZUNsYXNzID0gbmV3IERlcml2ZWQoKTsKCQoJc3RkOjpjb3V0IDw8IHRoZUNsYXNzLT5mdW5jdGlvbigxKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgdGhlQ2xhc3MtPmZ1bmN0aW9uMigyKSA8PCBzdGQ6OmVuZGw7CgkKCWRlbGV0ZSB0aGVDbGFzczsKCQoJcmV0dXJuIDA7Cn0=