Реализация интерфейсов на C ++

Обычно я программирую на C #, но пытаюсь немного написать на C ++, и мне трудно реализовать интерфейсы на C ++.

В C # я бы сделал что-то вроде этого:

class Base<T>
{
    public void DoSomething(T value)
    {
        // Do something here
    }
}

interface IDoubleDoSomething
{
    void DoSomething(double value);
}

class Foo : Base<double>, IDoubleDoSomething
{
}

В C ++ я реализовал это так:

template <class T>
class Base
{
public:
    virtual void DoSomething(T value)
    {
        // Do something here
    }
};

class IDoubleDoSomething
{
public:
    virtual void DoSomething(double value) = 0;
};

class Foo : public Base<double>, public IDoubleDoSomething
{
};

Проблема в том, что я не могу создать экземпляр Foo, потому что он абстрактный (не t реализовать DoSomething). Я понимаю, что могу реализовать DoSomething и просто вызвать метод на Base, но я надеялся, что есть лучший способ сделать это. У меня есть другие классы, которые наследуются от base с разными типами данных, и у меня есть другие классы, которые наследуются от IDoubleDoSomething, которые не используют Base.

Любая помощь приветствуется.

9
задан Wolf 6 June 2014 в 08:26
поделиться