本文介绍了无法构造包含(嵌套)映射的结构。坚固的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是结实版本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);
有什么问题吗?我如何解决此问题?推荐答案
更改版本从0.7.0版开始(不安全功能)
如果存储中的结构或数组包含映射,则它们的赋值不起作用。以前,在复制过程中会以静默方式跳过映射操作,误导性强,容易出错。
请参阅v0.7.0重大更改:https://docs.soliditylang.org/en/v0.8.9/070-breaking-changes.html
编辑:解决方案:首先将结构实例添加到存储
这篇关于无法构造包含(嵌套)映射的结构。坚固的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!