solidity - 无法构造包含(嵌套)映射的结构。坚固
问题描述
我使用solidity版本pragma solidity 0.8.6;
我有一个这个结构:
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);
“发送”和“转移”仅适用于“应付地址”类型的对象,而不适用于“地址”。
有什么问题 ?我怎么解决这个问题 ?
解决方案
从 Solidity v0.7.0 开始更改(不安全功能)
如果它们包含映射,则对存储中的结构或数组的赋值不起作用。以前,在复制操作期间会默默地跳过映射,这是误导且容易出错的。
请参阅v0.7.0 重大更改: https ://docs.soliditylang.org/en/v0.8.9/070-break-changes.html
编辑:解决方案:首先将您的结构实例添加到存储中
推荐阅读
- prolog - 我们如何在prolog中做一个循环?
- html - Asp.net Core 根据模型值在特定位置动态插入 HTML 元素
- node.js - 静态服务 nuxt 应用程序时代理模块不起作用
- node.js - Promise 和 Async 函数的问题
- c++ - 如何打印输入值
- android - CalendarPickerView 无法在 Firebase 内部初始化获取调用
- unidata - UniData 是否一次只允许每个连接执行一个命令或查询?
- javascript - 如何使用此 discord.js 代码检查提到的用户邀请?
- symfony - Symfony 4.3 中的 FOSUserBundle 注册表单
- c - C:参数传递与返回值的优点?