I have two classes with the same pure virtual method:
class InterfaceA
{
    public: virtual void doSomething() = 0;
};
class InterfaceB
{
    public: virtual void doSomething() = 0;
};
And I have a class that derives from these interfaces. I want to override each virtual function. I can do it this way (this works):
class ConcreteClass : public InterfaceA, public InterfaceB
{
    public:
    void InterfaceA::doSomething() override
    {
        printf( "In ConcreteClass::InterfaceA::doSomething()\n" );
    }
    void InterfaceB::doSomething() override
    {
        printf( "In ConcreteClass::InterfaceB::doSomething()\n" );
    }
};
My question is however, how can I have my methods' definitions outside the class declaration? So I can have them in my .cpp file. I tried this first:
// .h
class ConcreteClass : public InterfaceA, public InterfaceB
{
    public:
    void InterfaceA::doSomething() override;
    void InterfaceB::doSomething() override;
};
// .cpp
void ConcreteClass::InterfaceA::doSomething()
{
    printf( "In ConcreteClass::InterfaceA::doSomething()\n" );
}
void ConcreteClass::InterfaceB::doSomething()
{
    printf( "In ConcreteClass::InterfaceB::doSomething()\n" );
}
This doesn't compile in Visual C++ 2005 (VS 2005):
error C2509: 'doSomething' : member function not declared in 'ConcreteClass'
Does it require a specific sintax in order to be compiled?
Microsoft's MSDN documentation has a working example. But they use their __interface extension. I want to achieve the same but code that complies with standard c++03, if it is even possible.
Thanks!
                        
Even though it's not exactly what you are looking for, the obvious workaround is to dispatch to helper functions: