#include <iostream>
using namespace std;

class Interface {
public:
    virtual int interf1(int a) = 0;
    virtual int interf2(char c) = 0;
};


class Implement1 : virtual public Interface {
public:
    int interf1(int a){
        std::cout << a << a << std::endl;
        return 0;
    }
};

class Inplement2 : virtual public Interface {
public:
    int interf2(char c){
        std::cout << c << c << c << std::endl;
        return 0;
    }
};

class Test : public Implement1, public Inplement2 {

};


int main() {
	Test t;
	
	// static usage:
	t.interf1(42);
	t.interf2('x');
	
	// polymorphic usage via interface:
	Interface *i = &t;
	i->interf1(42);
	i->interf2('x');
	
	return 0;
}