【问题标题】:ERROR send and transfer are only available for objects of type address payable , not addressERROR send 和 transfer 仅适用于 address 类型的对象,而不适用于 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;

【问题讨论】:

    标签: solidity


    【解决方案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
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 2011-08-22
      • 2022-01-21
      • 2019-08-24
      相关资源
      最近更新 更多