Konvertierungsproblem mit abgeleiteten Controls
-
Hallo!
Ich bekomme folgende Meldung:
GetSelectedData' : this-Zeiger kann nicht von 'const class CSortListCtrl' in 'class CBasisListCtrl &' konvertiert werden
CBasisListCtrl ist von CListCtrl abgeleitet und CSortListCtrl von CBasisListCtrl.
GetSelectedData ist eine Funktion von CBasisListCtrl.
Diese Zeile wird angemeckert:long lID = m_lscLager.GetSelectedData();
Diese hier z.B. funktioniert einwandfrei (in einer anderen View):
long lID = m_lscPreise.GetSelectedData();
In beiden Fällen ist die Variable vom Typ CSortListCtrl.
Was meckert der da nun an und wie bringe ich ihn dazu, die Funktion auszuführen?
PS: In einer anderen Funktion in der betroffenen View funktioniert genau die Zeile auch fehlerfrei.
-
Das scheint ein Problem mit dem const zu sein - welchen Typ (inklusive cv-Qualifikation) haben denn die beteiligten Listen?
(Lösungsansatz: Definiere die betroffene Methode als "long GetSelectedData() const;")
-
Ahh, die Funktion, in der es nicht funktioniert ist const.
Deswegen ging das nicht.GetSelectedData kann ich leider nicht const machen, weil da drin GetSelectionMark() verwendet wird und dann kommt der bekannte Fehler da.
Was ist eine "cv-Qualifikation"?
-
estartu schrieb:
GetSelectedData kann ich leider nicht const machen, weil da drin GetSelectionMark() verwendet wird und dann kommt der bekannte Fehler da.
In dem Fall hilft nur eine Radikalkur (auch bekannt als const_cast).
(oder du beschwerst dich bei MS, warum die GetSelectionMark() nicht const gesetzt haben)Was ist eine "cv-Qualifikation"?
Kurz: Die const- und volatile-Ergänzungen des Datentyps.
PS: Noch eine Alternative: Nimm statt GetSelectionMark() lieber GetFirstSelectedItem() und GetNextSelectedItem() - die sind const.