Ich verwende zwei Verträge, bei denen einer eine Funktion des anderen aufruft:
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);
}
}
Der nächste Kontrakt ruft getData
den obigen Kontrakt auf, nachdem er ausgefüllt wurde mit addData
:
contract con2 {
function con2(){
}
function try(address con1Contract){
con1 b = con1(con1Contract);
bytes32[5] y = b.getData();
}
....
}
Da wir in Solidity keine Arrays mit dynamischer Größe übergeben können, habe ich die Größe des Arrays festgelegt. Allerdings bekomme ich immer noch folgenden Fehler:
TypeError: Type bytes32[5] memory is not implicitly convertible to expected type bytes32[5] storage pointer.
bytes32[5] y = b.getData();
Was mache ich falsch?
Gibt es auch einen effizienteren Weg, dies zu tun?
Versuchen Sie, Ihr "y"-Array zum Eigentum des Vertrags zu machen
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();
}
}
Für mich geht das.
Fawzy3881
Elisa Drion