Jens Hibbeler
Mitglied
Hallo,
ich bin gerade dabei C++ zu lernen und versuche zu begreifen wie Interfaces in dieser Sprache definiert und benutzt werden. Jedoch bin ich bis jetzt kläglich gescheitert. D.h. ich sehe meinen Fehler einfach nicht.
Angenommen ich habe die Klasse PersistierungsIntArtikel, die das Interface mit Hilfe von virtuellen Funktionen abbildet (abstrakte Klasse mit Funtkionen wie: virtual void tuWas(void) =0
. Dann habe ich noch die Klasse PersistIntAdapt Artikel, die das Interface durch Vererbung implementiert.
Doch wie rufe ich diese auf? Ich komme aus der Java Welt und bin da anscheinend etwa verwirrt.
Hier ein Beispiel mit Code.
Die Header Datei des Interfaces:
----------------------------------------------------------------------------------------------------
Die Header Datei der Datei, die das Interface implementiert:
----------------------------------------------------------------------------------------------------
Die zugehörige C++ Datei
-----------------------------------------------------------------------------------------------------
Nun wird interessant. Wie spreche ich nun die Klasse PersistIntAdaptArtikel über das Interface PersistierungsIntArtikel an? Vielleicht habe ich da was mit den Zeigern nicht verstanden? Muss ich den "new" Operator benutzen? Oder ist das Überschreiben der Methode in dem Header der Klasse PersistIntAdaptArtikel schon falsch? Warum muss ich beim Überschreiben die Klasse des Interfaces angeben?
So geht das Aufrufen der Klasse jedenfalls nicht:
Könnte mir jemand helfen und einen Tip geben? Ich bin da etwas überfordert.
Viele Grüße,
Jens Hibbeler
ich bin gerade dabei C++ zu lernen und versuche zu begreifen wie Interfaces in dieser Sprache definiert und benutzt werden. Jedoch bin ich bis jetzt kläglich gescheitert. D.h. ich sehe meinen Fehler einfach nicht.
Angenommen ich habe die Klasse PersistierungsIntArtikel, die das Interface mit Hilfe von virtuellen Funktionen abbildet (abstrakte Klasse mit Funtkionen wie: virtual void tuWas(void) =0

Doch wie rufe ich diese auf? Ich komme aus der Java Welt und bin da anscheinend etwa verwirrt.
Hier ein Beispiel mit Code.
Die Header Datei des Interfaces:
Code:
#ifndef PersisiterungsIntArtikel_h
#define PersisiterungsIntArtikel_h
#include <vcl.h>
class PersistierungsIntArtikel
{
public:
virtual AnsiString Reserviere(AnsiString text) =0 ;
};
#endif
----------------------------------------------------------------------------------------------------
Die Header Datei der Datei, die das Interface implementiert:
Code:
#ifndef PersistIntAdaptArtikel_h
#define PersistIntAdaptArtikel_h
#include "PersistierungsIntArtikel.h"
#include <vcl.h>
class PersistIntAdaptArtikel : PersistierungsIntArtikel {
public:
AnsiString Reserviere(AnsiString text);
};
#endif
----------------------------------------------------------------------------------------------------
Die zugehörige C++ Datei
Code:
#include "PersistierungsIntArtikel.h"
#include "PersistIntAdaptArtikel.h"
#include <vcl.h>
AnsiString PersistIntAdaptArtikel::Reserviere(AnsiString text)
{
//...tu irgendwas...
return "rueckgabe";
}
-----------------------------------------------------------------------------------------------------
Nun wird interessant. Wie spreche ich nun die Klasse PersistIntAdaptArtikel über das Interface PersistierungsIntArtikel an? Vielleicht habe ich da was mit den Zeigern nicht verstanden? Muss ich den "new" Operator benutzen? Oder ist das Überschreiben der Methode in dem Header der Klasse PersistIntAdaptArtikel schon falsch? Warum muss ich beim Überschreiben die Klasse des Interfaces angeben?
So geht das Aufrufen der Klasse jedenfalls nicht:
Code:
PersistierungsIntArtikel pIntA;
PersistIntAdaptArtikel *pIAA=&pIntA;
piAA->Reserviere("Text");
Könnte mir jemand helfen und einen Tip geben? Ich bin da etwas überfordert.
Viele Grüße,
Jens Hibbeler