Über eine abstrakte Liste iterieren
-
Hallo ,
ich möchte über eine abstrakte Liste iterieren.d.h. ich habe eine Klasse < MServiceKonkret > diese ist abgeleitet von der Basisklasse < MService >.
Die Objekte der Klasse < MServiceKonkret> werden in der Liste
< m_pobServiceKonkret > gespeichert.std::list<MServiceKonkret*> m_pobServiceKonkret ;Jetzt möchte ich in der Liste <pobServiceKonkret > nach eiinem bestimmten Eintrag suchen.
Ich möchte das aber abstrakter suchen . Deswegen benutze ich folgende Methode://Aufuf MSender* poSender = ( MServiceKonkret* )GibService ( p_sKanalname , m_pobServiceKonkret ); //Methode MService* MKlasse::GibService( CString p_sKanalname , std::list<MService*> pobService ) { MService* poService = NULL; std::list<MService*>::iterator oIter; for( oIter = pobService.begin(); oIter != pobService.end(); ++oIter ) { if( 1 == (*oIter)->GibKanalname().Compare( &p_sKanalname ) ) { poService = (*oIter); return poService; } } return NULL; }Und bekomme folgende Fehlermeldung:
m:\MKlasse.cpp(130): error C2664: 'MServicebusAdapter::GibService': Konvertierung des Parameters 2 von 'std::list<_Ty>' in 'std::list<_Ty>' nicht möglich
with
[
_Ty=MServiceKonkret*
]
and
[
_Ty=MService *
]Kann mir jemand helfen ?
Gruß ,
Elke
-
Hast Du den Header von MServiceKonkret in der Datei in der Du den Aufruf machst inkludiert?
-
Hast du den Header von MS..Konkret in der Datei in der Du den Aufruf machst inludiert?
-
Ja,
das habe ich gemacht.
-
std::list<MServiceKonkret*> m_pobServiceKonkret muss
std::list<MService*> m_pobServiceKonkret
lauten.
-
Hallo templäd,
das war es. Danke dir.
Jetzt funktioniert es.
Gruß Elke.
-
nein , in diesem Fall muss
std::list<MServiceKonkret*> m_pobServiceKonkret
sein. Sonst weiß ich ja nicht welche Elemente in der Liste sind.
Aber dann bekomme ich den Fehler:
error C2664: Konvertierung des Parameters 2 von 'std::list<_Ty>' in 'std::list<_Ty>' nicht möglich
with
[
_Ty=MServiceKonkret*
]
and
[
_Ty=MService *
]Was mache ich falsch ?
Gruß ,
Elke
-
Elke schrieb:
nein , in diesem Fall muss
std::list<MServiceKonkret*> m_pobServiceKonkret
sein. Sonst weiß ich ja nicht welche Elemente in der Liste sind.
Nein, muß es nicht - die Elemente wissen selber (dank vtable), von welcher Klasse sie sind.
-
Das habe ich gerade auch rausgefunden. Ich speichere doch in der Liste konkrete
Objekte . Deswegen wissen sie , von welcher Klasse sie sind.Stimmt.
War ein Fehler von mir.
danke.
Gruß ,
Elke.