Como inicializar o valor padrão de um parâmetro de função CArray <CClass *> com um CArray vazio?

Eu sei que eu poderia fazer isso melhor comstd::vector, mas o aplicativo com o qual estou mexendo já tem váriosCArray parâmetros em muitas funções relacionadas ... e não vou alterá-las todas no momento!

Eu simplesmente quero definir um vazioCArray<CClass*> - matriz deponteiros paraCClassentão o problemanão pode ser noCClass construtor - como o valor padrão de um parâmetro de função.

Abordagem 1

Se eu tentar fazer isso comoperador de atribuição econstrutor padrão:

void Function(CArray<CClass*> parameter = CArray<CClass*>());

Eu recebo o erro:

1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxTempl.h(262): error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h(535) : see declaration of 'CObject::CObject'
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h(510) : see declaration of 'CObject'
1>          This diagnostic occurred in the compiler generated function 'CArray<TYPE>::CArray(const CArray<TYPE> &)'
1>          with
1>          [
1>              TYPE=CClass *
1>          ]

Abordagem 2

Eu também tentei com umcopiar construtor:

void Function(CArray<Class*> parameter(CArray<CClass*>()));

Eu recebi os erros:

 >File.cpp(line X): error C2664: 'FunctionClass::Function' : cannot convert parameter 1 from 'CArray<TYPE>' to 'CArray<TYPE> (__cdecl *)(CArray<TYPE> (__cdecl *)(void))'
1>          with
1>          [
1>              TYPE=CClass*
1>          ]
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
linha X: contém uma chamada que fornece o parâmetro para Function, como mostrado:pFunctionClass->Function(parameter);

1> CFunctionClass.cpp (linha Y): erro C2511: 'void CFunctionClass :: Function (CArray)': função de membro sobrecarregada não encontrada em 'CShoePlaceDoc' 1> com 1> [1> TYPE = CClass * 1>] 1> FunctionClass.h (linha A): veja a declaração de 'CFunctionClass'

a linha Y contém oFunction cabeçalho de implementação, como mostrado: `void CFunctionClass :: Function (parâmetro CArray)

1> File.cpp (linha Z): erro C2660: 'CClassFunction :: Function': a função não aceita 0 argumentos

linha Z: contém uma chamada paraFunctionsem fornecer parâmetros, como mostrado:pClassFunction->Function();

A abordagem não funcionou, mas conseguiu chegar a umconclusão: Não é possível usar um construtor de cópia para atribuir um valor padrão para um parâmetro de função.

Abordagem 3

E se eu tentar com umlambda:

void Function(CArray<CClass*> parameter = [] () -> CArray<CClass*>{ return CArray<CClass*> (); } );

, então receberei várias saídas desses dois erros:

1>FunctionClass.h(line A): error C2440: 'default argument' : cannot convert from '`anonymous-namespace'::<lambda2>' to 'CArray<TYPE>'
1>          with
1>          [
1>              TYPE=CClass*
1>          ]
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>FunctionClass.h(line B): fatal error C1903: unable to recover from previous error(s); stopping compilation
linha A: declaração de métodolinha B: fechamento} doFunctionClass classe que contémFunction método

Origem do problema

A causa raiz do problema parece ser o fato de queCArray é uma classe diretamente derivada deCObject, que declara o operador de atribuição como privado:

class AFX_NOVTABLE CObject
{
//...
private:
    CObject(const CObject& objectSrc);              // no implementation
    void operator=(const CObject& objectSrc);       // no implementation
//...
}

Então, como posso fornecer uma matriz vazia como valor padrão para o parâmetro?

questionAnswers(1)

yourAnswerToTheQuestion