C++ und Interfaces

Hallo,

ich bin gerade dabei C++ zu lernen und komme aus der Java Welt. Dort gab es die Möglichkeit Interfaces zu verwenden, um sicherzustellen, dass eine Klasse über bestimmte Methoden verfügt.
Gibt es etwas vergleichbares in C++? Oder übernimt dies generell die Header Dateiund es gibt gar keine Interfaces?
Wenn es welche gibt; wie verwendet man sie?

Viele Grüße,

Jens Hibbeler
 
Direkt gibt es die Interfaces nicht, aber etwas gleichwertiges: Abstrakte Klassen. Du kannst eine Basisklasse definieren und in der Definition bei jeder Funktion ein = 0 anfügen.

Das heisst für den Compiler, eine abgeleitete Klasse muss diese Funktion implementieren, sonst gibt es einen Compiler-Fehler. Durch Mehrfachvererbung kann man dann dieselbe Funktionalität wie bei Java erzielen.

Ein Beispiel aus meinen Renderer-Code: Ich habe mehrere Renderer (DX8, DX9, OpenGL) von einer abstrakten Klasse (aka Interface) abgeleitet. Ich kann mir dann je nach Konfiguration eine DLL einladen, die mir einfach nur einen Pointer auf ein Interface gibt. Der Benutzer hat keinerlei Einsicht in die Klasse dahinter:

Code:
class IRenderer
{

  public:

    virtual bool Initialize( int iWidth, int iHeight, int iDepth ) = 0;
   
    virtual bool RenderVertexBuffer( IVertexBuffer* pBuffer ) = 0;

};

Jede davon abgeleitete Klasse, die instanziiert werden soll, muss direkt oder über eine "Zwischen"-Basis-Klasse diese Funktionen implementieren.

Wichtig: Beachte, dass du dann einen virtuellen Destruktor hast, damit die Klassen auch sauber abgeräumt werden! Immerhin hat der Compiler ja dann nur einen Interface-Pointer zur Verfügung!
 
Zurück