Solidity

如何修復“TypeError:類型地址不能隱式轉換為預期的應付類型地址”?(堅固度 0.8.2)

  • February 11, 2022

我已經從 Solidity 切換0.7.20.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 文件中的重大更改

引用自:https://ethereum.stackexchange.com/questions/94707