Ethereum 获取合同地址

Ethereum 获取合同地址,ethereum,solidity,smartcontracts,Ethereum,Solidity,Smartcontracts,我在网上搜索时看到了一个例子 我想部署一个名为ProjectContract的新合同。然而,我无法获得如下合同地址。我想这是旧版本的 address newProjectAddress = new ProjectContract(name, description, requiredPrice, msg.sender); 错误消息是: 如何为新版本执行此操作?当您创建new时,它将返回合同实例。您可以将其强制转换为地址类型并获取合同地址 pragma solidity ^0.8.4; co

我在网上搜索时看到了一个例子

我想部署一个名为ProjectContract的新合同。然而,我无法获得如下合同地址。我想这是旧版本的

address newProjectAddress = new ProjectContract(name, description, requiredPrice, msg.sender);
错误消息是:


如何为新版本执行此操作?

当您创建
new
时,它将返回合同实例。您可以将其强制转换为
地址
类型并获取合同地址

pragma solidity ^0.8.4;

contract ProjectContract {
    constructor (string memory name, string memory description, uint256 requiredPrice, address owner) {
    }
}

contract MyContract {
    event LogAddress(address _address);
    
    function createProjectContract(string memory name, string memory description, uint256 requiredPrice) external {
        ProjectContract newProjectInstance = new ProjectContract(name, description, requiredPrice, msg.sender);
        address newProjectAddress = address(newProjectInstance); // here
        emit LogAddress(newProjectAddress);
    }
}
看一看像这样的界面