编程菜鸟在写solidity时,遇到一个问题,在智能合约调用另一个地址的合约时未能正确的地取到方法的返回值:
pragma solidity ^0.4.0;
contract Person{
uint age = 10;
function increaseAge(string name, uint num) returns (uint){
return ++age;
}
function getAge()constant returns (uint){
return age;
}
}
contract CallTest{
function callByFun(address addr)returns (uint b){
bytes4 methodId = bytes4(sha3("increaseAge(string,uint256)"));
addr.call(methodId,"jack", 1);
assembly {
b := mload(0x60)
}
return b;
}
}
得到的b值是错误的,希望路过的大神指点一下。
(后来用了接口,避过了用汇编搬返回值,但是这个问题未能解决)