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

时间:2019-03-24 05:17:56

标签: ethereum solidity

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

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

1 个答案:

答案 0 :(得分:0)

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

function addCandidate(string memory _name) private

有关存储和内存关键字的更多信息,请查看here。希望它可以解决您的问题。