Konvertierung



  • Hallo,

    ich habe ein Programm mit PropertyPages erstellt. Für jede Seite habe ich eine eigene Klasse erstellt. In der View.h des Projekts habe ich folgende Zeiger eingefügt

    CGemeinschaftList* m_pList1;
    CNormalList* m_pList2;
    CV7List* m_pList3;
    cV8List* m_pList4;
    

    In der View.cpp steht

    m_pList1 = GetDocument()->GetList1;
    m_pList2 = GetDocument()->GetList2;
    m_pList3 = GetDocument()->GetList3;
    m_pList4 = GetDocument()->GetList4;
    

    Beim kompilieren erhalte ich nun die Fehlermeldung:
    error C2440: '=' : 'class CTypedPtrList<class CObList,class CGemeinschaft *> (__thiscall CMeinDoc::)(void)' kann nicht in 'class CTypedPtrList<class CObList,class CGemeinschaft kompilert werden.

    Was muss ich tun, damit diese Fehlermeldung nicht mehr kommt?

    Grüsse

    Franz



  • Hi,

    ohne Deine Quelltext exakt zu kennen ( gerade die GetList Funktionen sind interessant ) hier ein Vermutung, wenn Du nicht den korrekten Rückgabewert in Deinen GetList - Funktionen verwendest :

    m_pList1 = (CGemeinschaftList*)GetDocument()->GetList1;
    m_pList2 = (CNormalList*)GetDocument()->GetList2;
    m_pList3 = (CV7List*)GetDocument()->GetList3;
    m_pList4 = (cV8List*)GetDocument()->GetList4;
    

    Eventuell gibst Du aber auch keinen Zeiger zurück.

    Grüße

    BOA



  • Hallo BOA,

    leider hat mir Dein Vorschlag nichts gebracht. Habe nun "=" durch -> ersetzt. Nun erhalte ich die Fehlermeldung:

    C:\Eigene Programme\MeinView.cpp(658) : error C2039: 'GetDocument' : Ist kein Element von 'CTypedPtrList<class CObList,class CGemeinschaft *>'
    C:\Eigene Programme\MeinView.cpp(658) : error C2227: Der linke Teil von '->GetList1' muss auf Klasse/Struktur/Union zeigen

    Zur Information:

    Ich habe das Programm in CFormView mit PropertyPages erstellt. Ich nehme an, dass der Fehler daran liegt, dass PropertyPage keine Beziehung zu .Doc hat. Wie kann ich das ändern, wie kann ich einen entsprechenden Zeiger erstellen und wo muss ich den hinschreiben?

    Danke und Grüsse

    Franz



  • Reiche den CDocument Pointer doch durch die Konstruktoren Deines CPropertySheets sowie Deiner CPropertyPages durch.



  • Erstens sind GetList1 bis GetList4 Methoden, da fehlen also die runden Klammern.

    Zweitens sieht der Rückgabetyp dieser Methoden nicht so toll aus:
    CTypedPtrList<class CObList,class CGemeinschaft *> *

    Sicher, dass das passt?



  • klar, habe die Klammern vergessen !

    Richtiggehend heisst es:

    typedef CTypedPtrList<class CObList,class CGemeinschaft *> CGemeinschaftsList;

    steht so in INSIDE-VISUAL-C++ 6.0.


Anmelden zum Antworten