编写一个测试用的智能合约,java
pragma solidity ^0.4.8;app
contract strutsTest {
struct Funder{
address addr;
uint amount;
}
mapping(uint=>Funder)public funders;
uint public numFunder;测试
event log(address _addr,uint _u);ui
function newFunder(address _addr,uint _amount)payable public returns(uint _funderID){
++numFunder;
funders[numFunder]=Funder(_addr,_amount);
log(_addr,_amount);
return numFunder;
}this
function setFunder(uint u)payable public {
Funder f = funders[u];
f.amount +=msg.value;
log(f.addr,f.amount);
}
/* Constructor */
function strutsTest() public {对象
}
}ci
但出现如下错误:编译器
Variable is declared as a storage pointer. Use an explicit "storage" keyword to silence this warning.
看这个错误像是个警告,但在mist中,硬是不给经过,觉得是程序哪里写错了。查了N遍资料后,发现网上写法都是同样。感受应该是mist新版本增强了变量的限制。开始查storage的缘由,it
storage是将变量变成引用类型,从funders获取Funder结构对象,像java同样应该是引用类型,故我将Funder f = funders[u];这段代码加上storage修饰,即Funder storage f = funders[u];编译器显示成功经过了。io