我需要帮助来了解以下代码

时间:2019-01-26 14:51:02

标签: solidity

在以下代码中,当我在此代码中声明selfdestruct()函数时,出现以下错误。

错误是:

Invalid implicit conversion from address to address payable requested.

pragma solidity >=0.4.22 <0.6.0;

    contract owned{
        address owner;
        constructor() public{
            owner = msg.sender;
        }
        modifier onlyOwner{
            require(owner == msg.sender);
            _;
        }
    }
    contract mortal is owned{
        function close()public onlyOwner{
            selfdestruct(owner);
        }

}

1 个答案:

答案 0 :(得分:0)

假设您使用的是Solidity编译器0.5.x版,selfdestruct接受address payable,但是您传入的是address

您可以通过更改owner的类型来解决此问题:

address payable owner;

但是您的pragma指令是一个疯狂的范围……无法使此代码与0.4.x和0.5.x编译器一起工作。这些版本(包括该版本)之间有很多重大更改。