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
并传递一个字符串。这是通过未存储在区块链中的内存传入的参数。这里有更深入的解释: