Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
995
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Jens Hibbeler Jens Hibbeler ist offline Mitglied Bronze
    Registriert seit
    Oct 2005
    Beiträge
    32
    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
     

  2. #2
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.144
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    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!
     

  3. #3
    Jens Hibbeler Jens Hibbeler ist offline Mitglied Bronze
    Registriert seit
    Oct 2005
    Beiträge
    32
    Hallo,

    danke für Deine Antwort. Das erklärt alles!

    Viele Grüße,

    Jens Hibbeler
     

Ähnliche Themen

  1. Interfaces in anderen Interfaces implementieren
    Von mueslirocker im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 0
    Letzter Beitrag: 12.09.10, 18:12
  2. interfaces
    Von jiim im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 3
    Letzter Beitrag: 27.07.07, 08:06
  3. Interfaces
    Von brunso im Forum Java
    Antworten: 6
    Letzter Beitrag: 28.06.07, 09:56
  4. interfaces
    Von lernen.2007 im Forum Java
    Antworten: 7
    Letzter Beitrag: 23.03.06, 15:30
  5. Ínterfaces
    Von Swishagent im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 05.07.01, 12:06