使用CArray时出错

Att*_*lah 4 c++ mfc

所以,我试图这样使用CArray:

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

但在编译我的程序时,我收到此错误:

"错误C2248:'CObject :: CObject':无法访问类'CObject'中声明的私有成员c:\ program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h"

我甚至不知道这是从哪里来的.

救命!

cra*_*str 8

你得到的错误是因为你试图使用a CArray作为我可以收集的返回值.如果您将其从返回a更改CArray为接受引用参数,那么将进行编译.

试试这个:

class CPerson
{
public:
    CPerson();
    CPerson(int i);
    void operator=(const CPerson& p) {}
private:
    char* m_strName;
};

CPerson::CPerson()
{}

CPerson::CPerson(int i)
{
    sprintf(m_strName,"%d",i);
}

void aFunction(CArray<CPerson,CPerson&> &allPersons)
{
    for(int i=0;i<10;i++)
    {
        allPersons.SetAtGrow(i,CPerson(i));
        i++;
    }
}
Run Code Online (Sandbox Code Playgroud)