You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity开发:如何获取由其他合约部署的合约地址?

问题解决说明

你贴出的代码本身完全正确——通过address(new StorageContract(_userAddress))获取新部署合约地址的方式符合Solidity 0.8.x规范,能正常将地址存入ContractData结构体中。

你之前遇到的错误Return argument type struct StorageFactory.ContractData storage ref is not implicitly convertible to expected type (type of first return variable) address,应该是编写代码时,某个函数声明返回address类型,但实际返回的是userAddressToStruct[_userAddress]这个结构体实例,导致类型不匹配。现在代码能正常运行,说明你已经无意中修正了这个问题。

如果需要调试验证,可以给createStorageContract函数添加返回值:

function createStorageContract(address _userAddress) public returns(address) {
    require(!userAddressToStruct[_userAddress].exists, "Account already exists");
    address contractAddress = address(new StorageContract(_userAddress));
    userAddressToStruct[_userAddress].contractAddress = contractAddress;
    userAddressToStruct[_userAddress].exists = true;
    return contractAddress;
}

调用该函数后可直接获取新合约地址,也能通过userAddressToStruct映射查询存储的结构体数据。

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:15:57