contracts/3_Ballot.sol:33:37:TypeError:命名参数与函数声明不匹配



来自solidity:contracts/3_Ballot.sol:33:37:TypeError:命名参数与函数声明不匹配。请求内存newRequest=请求({^(相关源部分从这里开始,跨越多行(。

我每次都会犯这个错误。我该怎么办才能解决它?

pragma solidity ^0.4.17;
contract Campaign {
struct Request  {
string description;
uint value;
address recipient;
bool complete;
}
Request[] public requests;
address public manager;
uint public minimumContirbution;
address[] public approvers;
modifier restricted() {
require (msg.sender == manager);
_;
}
function Campaign (uint minimum) public {
manager = msg.sender;
minimumContirbution = minimum;
}
function contribute () public payable {
require(msg.value > minimumContirbution);
approvers.push(msg.sender);
}
function createRequest(string description, uint value, address recipient) restricted public  {
Request memory newRequest = Request({ 
description: description,
value: value,
restricted: restricted,
complete: false
});
requests.push(newRequest);
}
}

您可以用这种方式定义Request struct并将其推送到requests数组中:

function createRequest(string description, uint value, address recipient) restricted public {
Request memory newRequest = Request(description, value, recipient, false);
requests.push(newRequest);
}

通过这种方式,您可以将结构添加到数组中,并可以使用之前设置的所有参数进行检索。

因为您在请求类型中使用了错误的参数(受限(

试试这个:

Request memory newRequest = Request({
descritption: descritpion,
value: value,
recipient: recipient,
complete: false
});

相关内容

最新更新