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_pCMyClassesnun 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.