我试图通过构造添加候选人。
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.但是面临此错误:从literal_string“Candidate 1”到请求的字符串存储指针的隐式转换无效。 addCandidate('候选人1'); ^ ^ -----------
你在storage
函数头中使用addCandidate
,而这些是memory
变量。切换到memory
,你会很高兴。
function addCandidate(string memory _name) private
有关存储和内存关键字的更多见解,请查看here。希望它能解决你的问题。