Ethereum 请求的从文字字符串到字符串存储指针的隐式转换无效
我试图通过构造添加一个候选项Ethereum 请求的从文字字符串到字符串存储指针的隐式转换无效,ethereum,solidity,Ethereum,Solidity,我试图通过构造添加一个候选项 contract Election{ struct Candidate { uint id; string name; uint voteCount; } mapping(uint => Candidate) public candidates; uint public candidatesCount; constructor () public {
contract Election{
struct Candidate {
uint id;
string name;
uint voteCount;
}
mapping(uint => Candidate) public candidates;
uint public candidatesCount;
constructor () public {
addCandidate('Candidate 1');
addCandidate('Candidate 2');
}
function addCandidate(string storage _name) private {
candidatesCount ++;
candidates[candidatesCount] = Candidate(candidatesCount,_name,0);
}
}
预计将添加候选人1和2。
但面对这一错误:
请求的从文字字符串“候选1”到字符串存储指针的隐式转换无效。
添加候选人(“候选人1”);
^-----------^您正在
addCandidate
函数头中使用存储
,而这些是内存
变量。一定要切换到内存
,你就可以开始了
function addCandidate(string memory _name) private
有关存储和内存关键字的更多信息,请查看。希望它能解决您的问题。请求者看起来像是在遵循本教程,而我在同一点上被抓住了。需要注意的一点是,这里需要使用内存变量,因为您正在调用
addCandidate
并传递一个字符串。这是通过未存储在区块链中的内存传入的参数。这里有更深入的解释: