Procedimento Com Várias Funções de Array (Não Está Dando Certo...)

 

Oi pessoal! Precisava resumir vários processos com vetores/matrizes e acredito que um procedimento tipo void possa fazer o serviço. (ou quem sabe uma função com retorno? mas nem sequer imagino como fazer isso com vetores/matrizes)


Minha função:

void  CopiarMatriz_String(string& matrizFonte_funcao[], string& matrizDestino_funcao[])
{
      ZeroMemory(matrizDestino_funcao);
      ArrayResize(matrizDestino_funcao, ArraySize(matrizFonte_funcao), 0);
      ArrayCopy(matrizDestino_funcao, matrizFonte_funcao, 0, 0, WHOLE_ARRAY);
      ArrayPrint(matrizDestino_funcao);
}


Meu código principal:

string  matrizFonte[] = {"A","B","C"};

string  matrizDestino[];

CopiarMatriz_String(matrizDestino, matrizFonte);

Os valores no log aparecem nulos...

Alguma dica de como fazer esse procedimento funcionar? E melhor ainda, seria possível retornar os valores da matriz da função para a "matriz de fora"?

Obrigado pela atenção, um abraço!

 

RESOLVIDO!

Basta definir a passagem de referência no nome da matriz e não no tipo da variável. Meu código funcionando agora:

void  CopiarMatriz_String(string &matrizFonte_funcao[], string &matrizDestino_funcao[])
  {
   Print(matrizFonte_funcao[0]);
   
   ZeroMemory(matrizDestino_funcao);

   ArrayResize(matrizDestino_funcao, ArraySize(matrizFonte_funcao), 0);
   
   ArrayCopy(matrizDestino_funcao, matrizFonte_funcao);
  }


void OnStart()
  {
   string  matrizFonte[3] = {"A","B","C"};

   string  matrizDestino[];
  
   CopiarMatriz_String(matrizFonte, matrizDestino));

   ArrayPrint(matrizDestino);
  }

Resultado:

A

"A" "B" "C"


Espero que isso ajude iniciantes como eu a compreender melhor o funcionamento da passagem por referência para funções no MQL5. (lembrando que isso altera os valores fora da função, então muito cuidado!)