在地址pay[]存储引用中进行依赖于参数的查找后,未找到成员“推送”或不可见

在声明中,players.push(msg.sender);我收到以下错误:

在地址 payable[] 存储引用中进行依赖于参数的查找后,未找到成员“推送”或不可见。

因此,我无法可靠地解决应付数组。这里的解决方法是什么?

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0;

contract Lottery {
    address public manager;
    address payable[] public players;

    constructor() {
        manager = msg.sender;
    }

    function enter() public payable {
        players.push(msg.sender);            // ERROR IN THIS LINE
    }
}

回答

如果您使用 Solidity 0.7 进行编译,则一切正常。

这个错误显示在 Solidity 0.8 中,这是因为在 0.8msg.sender中不再自动payable。所以你需要先做到payable

players.push(payable(msg.sender));


以上是在地址pay[]存储引用中进行依赖于参数的查找后,未找到成员“推送”或不可见的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>