C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Vererbung und virtuelle Funktionen

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Jens Hibbeler
Guest





PostPosted: Thu Oct 13, 2005 12:05 pm    Post subject: Vererbung und virtuelle Funktionen Reply with quote



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) =0Wink. 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





PostPosted: Thu Oct 13, 2005 1:30 pm    Post subject: Re: Vererbung und virtuelle Funktionen Reply with quote



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





PostPosted: Thu Oct 13, 2005 3:33 pm    Post subject: Re: Vererbung und virtuelle Funktionen Reply with quote



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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.