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的主要内容,如果未能解决你的问题,请参考以下文章
.Net Core 3.1 Web Api 的 403 Forbidden Error 仅适用于 Delete & PUT 方法
git error: RPC failed; curl transfer closed with outstanding read data remaining