从 literal_string 到请求的字符串存储指针的隐式转换无效

Invalid implicit conversion from literal_string to string storage pointer requested

我正在尝试通过结构添加候选人。

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" 到请求的字符串存储指针的隐式转换无效。 添加候选人('Candidate 1'); ^------------^

您在 addCandidate 函数头中使用 storage,而这些是 memory 变量。更改为 memory,您就可以开始了。

function addCandidate(string memory _name) private

有关存储和内存关键字的更多见解,请查看 here。希望它能解决你的问题。