不允许从"string storage ref"到"contract vault"的显式类型转换



当我尝试放置字符串实例时,在混合环境中出现标题中显示的错误消息。我使用的是0.8.0版本的solid。我如何将字符串变量从我的主合同的'vault'合同实例中放置,而不会得到错误(如标题所示)

下面是金库合同:

contract vault{
string public vaultKey = "vault";
string public inputKey = "";
bool public valid = false;
constructor(string memory _inputKey) {
inputKey = _inputKey;
valid =  keccak256(abi.encodePacked((inputKey))) == keccak256(abi.encodePacked((vaultKey)));
}
function getValidity()public returns(bool){
return valid;
}
}

下面的是将要使用的主要合同:

contract manager{
// most of the irrelevant lines of code have been removed
string public keyVal; //for vault
vault public securityVault;
constructor(string memory _vaultKey ){     
keyVal = _vaultKey;
securityVault = vault(keyVal);
}


}
securityVault = vault(keyVal);

这一行试图在地址加载vault合约keyVal。因为你传递的是一个字符串,而不是一个地址。


如果您想将vault契约部署到新地址,将字符串传递给构造函数,则需要使用new关键字。

securityVault = new vault(keyVal);

相关内容

  • 没有找到相关文章

最新更新