在地址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));
THE END
二维码