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.


Anmelden zum Antworten