2009-05-14 6 views
2

Possible en double:
error using CArray« erreur C2248: 'CObject :: CObject': ne peut pas accéder à un membre privé déclaré dans la classe 'CObject'

double: error using CArray


donc, j'essaie d'utiliser CArray comme ceci:

CArray<CPerson,CPerson&> allPersons; 
    int i=0; 
    for(int i=0;i<10;i++) 
    { 
     allPersons.SetAtGrow(i,CPerson(i)); 
     i++; 
    } 

lors de la compilation, mais mon programme, je reçois cette erreur:

"error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject' c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h" 

Je ne comprends même pas où cela vient.

AIDE!

+2

Dupliquer du même auteur: http://stackoverflow.com/questions/864864/error-using-carray – crashmstr

Répondre

2

Écrivez un constructeur pour votre classe (CPerson) et rendez-le public. ça devrait résoudre le problème.

1

Cela signifie que votre programme tente de construire une instance de CObject, qui semble être interdite car CObject a un constructeur privé.

Peut-être que le CArray essaie de construire ces instances? À quoi ressemble le reste du programme?

+0

oui, je pense que cela a à voir avec le fait que CArray essaye de construire une instance de CObject. mais comment contourner le problème? – Attilah

+0

Comme je l'ai demandé, à quoi ressemble le reste du programme? Postez le programme complet le plus court qui montrera le problème, en omettant les trucs générés par n'importe quel magicien, etc. –

19

Le problème est que vous construisez un CObject sur la pile. Quelque part dans votre programme, vous essayez de transmettre une référence à un objet CArray mais vous avez accidentellement omis le "&" dans le prototype de fonction. Par exemple:

void DoFoo(CArray cArr) 
{ 
    // Do something to cArr... 
} 

^^^ Le code ci-dessus provoquera l'erreur que vous rencontrez.

void DoFoo(CArray & cArr) 
{ 
    // Do something to cArr... 
} 

^^^ Le code ci-dessus ne sera pas la cause du problème.

+1

C'était exactement ce que j'avais fait et j'ai chassé le problème jusqu'à ce que je cherche ici. Bon appel. –

+0

Il n'a même pas besoin d'être manquant et dans le prototype de la fonction. Le problème dans mon code était manquant et dans la déclaration de variable. – Eternal21

Questions connexes