Normalmente programo en C# pero estoy tratando de hacer un poco de C++ y estoy luchando de alguna manera tratando de implementar interfaces en C++.Implementando interfaces en C++
En C# que me gustaría hacer algo como esto:
class Base<T>
{
public void DoSomething(T value)
{
// Do something here
}
}
interface IDoubleDoSomething
{
void DoSomething(double value);
}
class Foo : Base<double>, IDoubleDoSomething
{
}
En C++ He aplicado de esta manera:
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
{
};
El problema es que yo no puede crear una instancia de Foo, ya que es Resumen (no implementa DoSomething). Me doy cuenta de que puedo implementar DoSomething y solo llamar al método en Base, pero esperaba que hubiera una forma mejor de hacerlo. Tengo otras clases que heredan de base con diferentes tipos de datos y tengo otras clases que heredan de IDoubleDoSomething que no usan Base.
Cualquier ayuda apreciada.
¿Qué es tan malo con esto, y de qué manera podría ser "mejor"? –
Supongo que "mejor" estaría actuando como la versión C# donde 'Foo' hereda el método de Base y no necesita ninguna implementación. Supongo que no hay nada realmente malo en hacer una implementación de cada método desde Base en Foo, simplemente se siente desordenado. – Clueless
Es complicado, pero nunca he encontrado una mejor manera :( –