1

私が使用しているバージョンは0.5.2です

Remix IDEで以下のコードを実行しています

pragma solidity  ^0.5.2;

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

    constructor () public {
        manager = msg.sender;
    }

    function enter() public payable {
        require(msg.value > 0.01 ether);
        players.push(msg.sender);
    }

    // function getPlayers() public view returns(address[] memory) {
    //     return players;
    // }

    function random() public view returns(uint) {
        return uint(keccak256(abi.encodePacked(block.difficulty, now, players)));
    }

    function pickWinner() public {
        uint index = random() % players.length;
        players[index].transfer(address(this).balance);
        players = new address[](0); // This line of code giving an error
    }
}

私が得ているエラーは次のとおりです。

Type address[] memory is not implicitly convertible to expected type address payable[] storage ref.

関数 pickWinner() で:

function pickWinner() public {
    uint index = random() % players.length;
    players[index].transfer(address(this).balance);
    players = new address[](0); // This line of code giving an error
}

宝くじ契約をリセットするために、プレーヤーの配列をすべて 0 にリセットしようとしています

4

2 に答える 2