Solidity
如何修復“TypeError:類型地址不能隱式轉換為預期的應付類型地址”?(堅固度 0.8.2)
我已經從 Solidity 切換
0.7.2
到0.8.2
並且聲明為應付(所有者)的地址在契約中報告它們是“不支付”的。
pragma solidity ^0.8.2; contract MyContract { address payable public owner; constructor(address oracleAddress) { owner = msg.sender; priceFeed = AggregatorV3Interface(oracleAddress); }
結果是..
TypeError: Type address is not implicitly convertible to expected type address payable
是否存在
0.8.2
導致這種情況的變化?解決方法是什麼?
從
Solidity 0.8.0
您不需要明確聲明該地址為應付地址,但是當您將金額轉移到該地址時。請參閱下面的範例
0.8.x
,添加一個將資金轉移給所有者的功能:contract MyContract { address public owner; constructor(address oracleAddress) { owner = msg.sender; priceFeed = AggregatorV3Interface(oracleAddress); } function transfer() public payable { payable(owner).transfer(msg.value); } }
如需進一步參考,您可以查看 Solidity 文件中的重大更改。