Fehler mit CArray
So, ich bin versucht, CArray
wie diese :
CArray<CPerson,CPerson&> allPersons;
int i=0;
for(int i=0;i<10;i++)
{
allPersons.SetAtGrow(i,CPerson(i));
i++;
}
Aber beim kompilieren meines Programms bekomme ich diese Fehlermeldung :
"Fehler C2248: 'CObject::CObject' :
cannot access private member deklariert
in der Klasse 'CObject' c:\program
files\microsoft visual studio
9.0\vc\atlmfc\include\afxtempl.h"
Ich gar nicht verstehen, wo diese herkommt.
HILFE!
- Es scheint, das problem ist auf die Tatsache zurückzuführen, dass CObject hat einen privaten Konstruktor. welchen Schritt sollte ich nehmen um das problem zu lösen ? warten, von Ihnen zu hören, vielen Dank.
- Es gibt zwei i++ Anweisungen in dieser Schleife, aber das ist wahrscheinlich nicht die Ursache des Problems.
- Sind Sie sicher, dass die aufgelisteten Fehler kommt von dem code, den Sie gezeigt haben?
- Mark, vielen Dank für i++ Ding
- crashmstr, ja , kommt der Fehler aus dem code, den ich gezeigt habe.
- Siehe mein update unten. Der code wird kompiliert. Es ist sehr falsch in mancher Hinsicht, aber es kompiliert (und es wurde genommen aus Ihrem Ausschnitt aus einem Kommentar)
- crashmstr, ich bin mir bewusst, dass der code falsch ist in soe sens, ich bin nur zu lernen, über CArray, es ist für pädagogische Zwecke. Vielen Dank für Ihre Bemühungen, mir zu helfen.
- Das falsch war, mehr über sprintf auf einen nicht zugeordneten char * und möglicherweise mit zwei Schritten in eine for-Schleife versehen. Schauen Sie auf meine Antwort unten. Es kompiliert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehler, die Sie erhalten, weil Sie versuchen, eine
CArray
als einen Rückgabewert von dem, was ich sammeln können. Wenn Sie es ändern, von einer Rückkehr einerCArray
um einen Referenz-parameter anstelle, dass stellen.Versuchen Sie dies:
Sind Sie mit einer der Copy-Konstruktor oder der Zuweisungsoperator von CObject ? ( CArray ist abgeleitet von CObject)
Zum Beispiel:
ODER
Machst du das?
BEARBEITEN:
Wenn Sie möchten, kopieren Sie die Elemente in CArray, schreiben Sie eine helper-Methode CopyArray() und kopieren Sie die Elemente manuell.
Meinst du zu sagen
CArray<CPerson> allPersons;
? Ich weiß nicht, wie das weglassen des enthaltenen Typs führen würde, um den gemeldeten Fehler, aber...Ist
CPerson
abgeleitet vonCObject
? Hat es einenprivate
Konstruktor? Ihre Nutzung desSetAtGrow()
scheint korrekt zu mir, sonst.Wenn das nicht funktioniert, könnten Sie versuchen, wieder zurück zu fallen, um mit der
Add()
Funktion, als deine Schleife nicht zu erfordern scheinen, dassSetAtGrow()
.Ich bin mir nicht ganz sicher, was Ihr problem war, aber nehmen Sie auch einen Blick auf diese: Microsoft CObject abgeleitete Klasse Spezifikationen.
Möchten Sie vielleicht fügen Sie diesen code:
Hoffe, es hilft für die Zukunft.
Wenn
CPerson
ist ein Komplexes Objekt, vielleicht sollten Sie erwägen, ZeigerVergessen Sie nicht zu löschen, array-Inhalt, sobald es nicht mehr benötigt