Я обычно программирую на 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, потому что он абстрактный (не реализует DoSomething). Я понимаю, что могу реализовать DoSomething и просто вызвать метод на Base, но я надеялся, что есть лучший способ сделать это. У меня есть другие классы, которые наследуют от базы с другими типами данных, и у меня есть другие классы, которые наследуют от IDoubleDoSomething, которые не используют Base.
Любая помощь приветствуется.