CTypedPtrArray::Add



  • Hallo Forum,

    ich möchte beliebig viele Objekte einer Klasse erzeugen und diese im CTypedPtrArray abspeichern. Dazu habe ich folgendes gemacht:

    Membervariable:

    CTypedPtrArray < CObArray, CMyClass* > *m_pCMyClasses
    

    nun erzeuge ich ein paar Objekte und möchte diese in m_pCMyClasses ablegen:

    CMyClass *pMyClass = new CMyClass[nIndex];
    
    for(int i=0; i<nIndex; i++)
    {
      pMyClass[i].SetSomething(i);
      m_pCMyClass->Add(pMyClass[i]); 
    }
    

    als Fehlermeldung erhalte ich:

    error C2664: 'CTypedPtrArray<BASE_CLASS,TYPE>::Add': Konvertierung des Parameters 1 von 'CMyClass' in 'CMyClass *' nicht möglich

    Was habe ich falsch gemacht?

    Grüße



  • Du übergibst bei

    m_pCMyClass->Add(pMyClass[i]);
    

    das Objekt. Verlangt wird aber die Adresse (Pointer) des Objektes.



  • ja genau.
    Wenn ich aber die Adresse übergebe:

    m_pCMyClass->Add(&pMyClass[i]);
    

    bekomme ich ne andere Fehlermeldung:

    CTypedPtrArray<BASE_CLASS,TYPE>::Add': Konvertierung des Parameters 1 von 'CMyClass *' in 'CObject *' nicht möglich



  • Versuchs mal so:

    CArray < CMyClass*, CMyClass* > *m_pCMyClasses;
    


  • Wenn du Zeiger auf deine Objekte im TypedPtrArray speichern willst, dann muss der erste Templateparameter vom Typ CPtrArray sein.

    CTypedPtrArray < CPtrArray , CMyClass* > *m_pCMyClasses;
    


  • diese Pointer machen mich noch wahnsinnig 🙂
    also eigentlich wollte ich wie oben beschrieben, beliebig viele Objekte vom typ MyClass im CTypedPtrArray speichern. Ob ich da nun Zeiger auf meine Objekte oder die Objekte selbst abspeichern muss, ist mir noch nicht ganz klar. Was wäre denn vorteilhafter? Später will ich auf diese Objekte über dieses Array zugreifen.


Anmelden zum Antworten