 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Jens Hibbeler Guest
|
Posted: Thu Oct 13, 2005 12:05 pm Post subject: Vererbung und virtuelle Funktionen |
|
|
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:
#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:
#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
#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:
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
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Thu Oct 13, 2005 1:30 pm Post subject: Re: Vererbung und virtuelle Funktionen |
|
|
Jens Hibbeler wrote:
| Quote: | class PersistIntAdaptArtikel : PersistierungsIntArtikel {
|
Du leitest privat ab. Versuch's mal mit:
class PersistIntAdaptArtikel : public PersistierungsIntArtikel {
| Quote: | public:
AnsiString Reserviere(AnsiString text);
};
|
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Jens Hibbeler Guest
|
Posted: Thu Oct 13, 2005 3:33 pm Post subject: Re: Vererbung und virtuelle Funktionen |
|
|
Hallo,
danke für Eure Antworten. Ich glaube ich habe es jetzt verstanden. Ich bin
halt Neuling und in C++ überhaupt nicht bewandert. Deswegen ist es alles ein
bisschen durcheinander geraten.
Viele Grüße,
Jens
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|