Ethereum “成员”;推;在address[]storage ref中的参数相关查找后找不到或不可见
在语句Ethereum “成员”;推;在address[]storage ref中的参数相关查找后找不到或不可见,ethereum,solidity,Ethereum,Solidity,在语句players.push(msg.sender)中我收到以下错误: 在地址[]存储参考中的参数相关查找后,未找到成员“推送”或成员“推送”不可见。 因此,我无法以稳定的方式处理应付数组。这里的解决办法是什么 // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0; contract Lottery { address public manager; address payable[] public pl
players.push(msg.sender)中代码>我收到以下错误:
在地址[]存储参考中的参数相关查找后,未找到成员“推送”或成员“推送”不可见。
因此,我无法以稳定的方式处理应付数组。这里的解决办法是什么
// 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.8中,发件人不再自动支付。因此,您需要首先将其设置为应付账款:
players.push(payable(msg.sender));
我必须显式地将msg.sender
转换为payment
,才能让它正常工作
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0;
contract Lottery {
address payable public manager;
address payable[] public players;
constructor() {
manager = payable(msg.sender);
}
function enter() public payable {
players.push(manager);
}
}
参考资料: