Pasar una matriz de tamaño fijo de bytes32 [] entre dos contratos [duplicado]

Estoy usando dos contratos donde uno llama a una función del otro:

contract con1 {
    bytes32[5] data;

    function con1(){
    }

    function addData(bytes32[5] a) { //fills the array
    }   

    function getData() public constant returns(bytes32[5]){  //retrieve array
        return (data);
    }
}

El siguiente contrato llama getDatadel contrato anterior después de que se haya completado usando addData:

contract con2 {
    function con2(){
    }

    function try(address con1Contract){
        con1 b = con1(con1Contract);
        bytes32[5] y = b.getData();
    }
  ....
}

Dado que en Solidity no podemos pasar matrices de tamaño dinámico, arreglé el tamaño de la matriz. Sin embargo, sigo recibiendo el siguiente error:

TypeError: Type bytes32[5] memory is not implicitly convertible to expected type bytes32[5] storage pointer.
bytes32[5] y = b.getData();

¿Qué estoy haciendo mal?

Además, ¿hay una manera más eficiente de hacer esto?

Mi pregunta no es un duplicado. La otra pregunta es intentar recibir la llamada de retorno en una matriz de tamaño dinámico.
Es. Se encuentra el mismo problema y se da una respuesta en esta publicación.

Respuestas (1)

Intente hacer que su matriz "y" sea propiedad del contrato

 contract con1 {
    bytes32[5] data;

    function con1(){
    }

    function addData(bytes32[5] a) { //fills the array
    }   

    function getData() public constant returns(bytes32[5]){  //retrieve array
        return (data);
    }
}

contract con2 {
    bytes32[5] y;
    function con2(){
    }

    function trys(address con1Contract){
        con1 b = con1(con1Contract);
         y = b.getData();
    }
}

Esto funciona para mi.