当我将新创建的契约地址推入contracts[]数组时,出现了上述错误。我哪里出问题了?任何帮助都将不胜感激。
pragma solidity ^0.8.0;
contract Bakery {
// index of created contracts
address[] public contracts;
Cookie public cookieContract;
function getContractCount()
public
returns(uint contractCount)
{
// return contracts.length;
}
// deploy a new contract
function newCookie(string memory _name)
public
returns(Cookie newContract)
{
newContract = new Cookie(_name);
contracts.push(newContract); ///**Line Having Error***//////
return newContract;
}
function getCookieName (Cookie _cookieContract) public returns(string memory name) {
cookieContract = _cookieContract;
string memory n = cookieContract.name();
return n;
}
}
contract Cookie {
//name
string public name;
constructor (string memory _name) public{
name = _name;
}
// suppose the deployed contract has a purpose
function getFlavor()
public
pure
returns (string memory flavor)
{
return "mmm ... chocolate chip";
}
}```发布于 2021-12-29 22:27:44
问题是contracts被声明为
address[] public contracts;所以它只接受地址。
您可以通过将newContract转换为地址来修复它。
function newCookie(string memory _name)
public
returns(Cookie newContract)
{
newContract = new Cookie(_name);
contracts.push(address(newContract));
return newContract;
}https://ethereum.stackexchange.com/questions/117402
复制相似问题