solidity定義變量出現沒法編譯錯誤。

    編寫一個測試用的智能合約,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

相關文章
相關標籤/搜索