solidity(大於0.4.22且小於0.6.0)版本中“transfer”未找到或在引數相關查詢i後不可見問題
阿新 • • 發佈:2021-02-06
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當然不能進行轉賬操作了(不論轉出還是轉入)。這個是本人的淺薄理解(個人想法),如有不同處,請諒解。