ERROR 发送和传输仅适用于 address 类型的对象,而不是 address 类型的对象。

Juo*_*tas 2 solidity

    function finalizeRequest(uint index) public restricted {
    Request storage request = requests[index];
    
    require(request.approvalCount > (approversCount / 2));
    require(!request.complete);
    
    request.recipient.transfer(request.value);
    request.complete = true;
}
Run Code Online (Sandbox Code Playgroud)

错误行 ---> request.recipient.transfer(request.value);

有人可以帮我解决这个问题吗谢谢

我使用的solidity版本:

pragma solidity >0.4.17 <0.8.0;
Run Code Online (Sandbox Code Playgroud)

Abd*_*ieh 8

如果您使用的编译器早于 0.6,则可以声明recipientaddress payable而不是address。如果您使用的编译器大于或等于0.6,则可以使用@Petr Hejda 提供的解决方案。


Pet*_*jda 5

您需要将其标记request.recipientpayable

payable(request.recipient).transfer(request.value);
Run Code Online (Sandbox Code Playgroud)