1. 程式人生 > 其它 >solidity(大於0.4.22且小於0.6.0)版本中“transfer”未找到或在引數相關查詢i後不可見問題

solidity(大於0.4.22且小於0.6.0)版本中“transfer”未找到或在引數相關查詢i後不可見問題

技術標籤:solidity區塊鏈程式設計區塊鏈數字貨幣

Member “transfer” not found or not visible after argument-dependent lookup i

今天在編寫solidity時發現了這個錯誤,版本號為:

pragma solidity >=0.4.22<0.6.0;

錯誤程式碼如下:

pragma solidity >=0.4.22<0.6.0;

contract payable_test{
   
    function pay(address  account1) public payable{
        address (account1).transfer(msg.value);
    
    }
    function address_test() public view returns(address){
        
        return address(this);
    } 
    function check_value(address account) public view returns(uint){
        
        return address(account).balance/10**18;
    }

編譯後發現是transfer轉賬的相關錯誤(轉賬的地址定義問題),這也是版本的一些改動。錯誤的地方為:

function pay(address  account1) public payable{
        address (account1).transfer(msg.value);
    }

廢話不多說,將其中的“address account1”部分修改為
“address payable account1"即可。

function pay(address payable account1) public payable{
        address (account1).transfer(msg.value)
    }

即將要進行transfer操作的地址定義為可payable(可支付款)的地址即可,就這樣理解即可,不可payable當然不能進行轉賬操作了(不論轉出還是轉入)。這個是本人的淺薄理解(個人想法),如有不同處,請諒解。