ERROR send 和 transfer 仅适用于 address 类型的对象,而不适用于 address

Posted

技术标签:

【中文标题】ERROR send 和 transfer 仅适用于 address 类型的对象,而不适用于 address【英文标题】:ERROR send and transfer are only available for objects of type address payable , not address 【发布时间】:2021-07-24 06:29:29 【问题描述】:
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;

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

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

我正在使用的solidity版本:

pragma solidity >0.4.17 <0.8.0;

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

您需要将request.recipient 标记为payable

payable(request.recipient).transfer(request.value);

【讨论】:

这给了我:ParserError: Expected primary expression.payable(orders[i].investor).transfer(msg.value * orders[i].amount / totalRaised); ^-----^ @lampbottle 这似乎是与此问题无关的语法错误。请post 提出一个单独的问题,并附上重现问题的步骤。 这是因为我使用的是旧版本的solidity

以上是关于ERROR send 和 transfer 仅适用于 address 类型的对象,而不适用于 address的主要内容,如果未能解决你的问题,请参考以下文章

Rhino Mocks 存根和模拟仅适用于接口?

数组接收的 MPI 和仅适用于一级

.Net Core 3.1 Web Api 的 403 Forbidden Error 仅适用于 Delete & PUT 方法

Firebase Api Key 仅适用于 iOS

仅返回最新行[重复]

git error: RPC failed; curl transfer closed with outstanding read data remaining