Compilation 实体错误:无法构造包含(嵌套)映射的结构
我的solc版本:Compilation 实体错误:无法构造包含(嵌套)映射的结构,compilation,ethereum,solidity,Compilation,Ethereum,Solidity,我的solc版本: "solc": "^0.7.1", 当我尝试构造包含映射的结构时,出现以下错误: “无法构造包含(嵌套)映射的结构” 这是我的密码 运动索尔 contract Campaign { struct Request { ... // I guess this might cause an error mapping(address => bool) approvals; } constructor(uin
"solc": "^0.7.1",
当我尝试构造包含映射的结构时,出现以下错误:
“无法构造包含(嵌套)映射的结构”
这是我的密码
运动索尔
contract Campaign {
struct Request {
...
// I guess this might cause an error
mapping(address => bool) approvals;
}
constructor(uint256 minimum, address creator) {
...
}
function createRequest(
string memory description,
uint256 value,
address payable recipient
) public onlyManager {
Request memory newRequest = Request({
// Here the compiler complains
});
}
...
如果我想在我的请求结构中放置一个映射,还有其他方法吗?
谢谢我想我找到了答案
我将映射放在结构的外部,错误消失了:
contract Campaign {
struct Request {
//...
}
mapping(address => bool) approvals;
我不确定它是否完全解决了这个问题。如果有其他问题,我将进行更新。从0.7.0开始,请执行以下操作:
struct Request{
string description;
uint value;
address recipient;
bool complete;
uint approvalsCount;
mapping(address => bool) approvals;
}
uint numRequests;
mapping (uint => Request) requests;
function createRequest (string memory description, uint value,
address recipient) public{
Request storage r = requests[numRequests++];
r.description = description;
r.value = value;
r.recipient = recipient;
r.complete = false;
r.approvalsCount = 0;
}