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 getData
del 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?
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.
Fawzy3881
Eliseo Drión