无法构造包含(嵌套)映射的结构。坚固的 [英] Struct containing a (nested) mapping cannot be constructed. in solidity

查看:11
本文介绍了无法构造包含(嵌套)映射的结构。坚固的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是结实版本pragma solidity 0.8.6;

我有一个This结构:

   struct Request {
    string description;
    uint256 value;
    address recipient;
    bool complete;
    uint256 approvalCount;
    mapping(address => bool) approvals;
}

当我需要为该结构创建实例时,它会显示以下错误:

无法构造包含(嵌套)映射的结构

    Request memory newRequest = Request({
        description: description,
        value: value,
        recipient: recipient,
        complete: false,
        approvalCount: 0
    });

当我需要转移时,它会显示以下错误:

       request.recipient.transfer(request.value);

发送和转账仅适用于类型为&Quot;Address Payed&Quot;的对象,而非&Quot;Address&Quot;。

有什么问题吗?我如何解决此问题?

推荐答案

更改版本从0.7.0版开始(不安全功能)

如果存储中的结构或数组包含映射,则它们的赋值不起作用。以前,在复制过程中会以静默方式跳过映射 操作,误导性强,容易出错。

请参阅v0.7.0重大更改: https://docs.soliditylang.org/en/v0.8.9/070-breaking-changes.html

编辑:解决方案:首先将结构实例添加到存储

这篇关于无法构造包含(嵌套)映射的结构。坚固的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆