如何在 solidity 版本 0.5.2 中调用另一个合约内的合约?
How to Call contract inside another contarct in solidity version 0.5.2?
我正在使用 solidity 版本 0.5.2
pragma solidity ^0.5.2;
contract CampaignFactory{
address[] public deployedCampaigns;
function createCampaign(uint minimum) public{
address newCampaign = new Campaign(minimum,msg.sender); //Error
//here!!!
deployedCampaigns.push(newCampaign);
}
function getDeployedCampaigns() public view returns(address[] memory){
return deployedCampaigns;
}
}
我在 CampaignFactory 合同中分配调用 Campaign 合同时遇到 错误
TypeError: Type contract Campaign is not implicitly convertible to expected
type address.
address newCampaign = new Campaign(minimum,msg.sender);
我有另一个名为 Campaign 的合约,我想在 CampaignFactory 中访问它。
contract Campaign{
//some variable declarations and some codes here......
我的构造函数如下
constructor (uint minimum,address creator) public{
manager=creator;
minimumContribution=minimum;
}
你可以直接施法:
address newCampaign = address(new Campaign(minimum,msg.sender));
或者更好的是,停止使用 address
并使用更具体的类型 Campaign
:
pragma solidity ^0.5.2;
contract CampaignFactory{
Campaign[] public deployedCampaigns;
function createCampaign(uint minimum) public {
Campaign newCampaign = new Campaign(minimum, msg.sender);
deployedCampaigns.push(newCampaign);
}
function getDeployedCampaigns() public view returns(Campaign[] memory) {
return deployedCampaigns;
}
}
要从另一个合约调用现有合约,在cast中传递合约地址
pragma solidity ^0.5.1;
contract D {
uint x;
constructor (uint a) public {
x = a;
}
function getX() public view returns(uint a)
{
return x;
}
}
contract C {
//DAddress : is the exsiting contract instance address after deployment
function getValue(address DAddress) public view returns(uint a){
D d =D(DAddress);
a=d.getX();
}
}
我正在使用 solidity 版本 0.5.2
pragma solidity ^0.5.2;
contract CampaignFactory{
address[] public deployedCampaigns;
function createCampaign(uint minimum) public{
address newCampaign = new Campaign(minimum,msg.sender); //Error
//here!!!
deployedCampaigns.push(newCampaign);
}
function getDeployedCampaigns() public view returns(address[] memory){
return deployedCampaigns;
}
}
我在 CampaignFactory 合同中分配调用 Campaign 合同时遇到 错误
TypeError: Type contract Campaign is not implicitly convertible to expected
type address.
address newCampaign = new Campaign(minimum,msg.sender);
我有另一个名为 Campaign 的合约,我想在 CampaignFactory 中访问它。
contract Campaign{
//some variable declarations and some codes here......
我的构造函数如下
constructor (uint minimum,address creator) public{
manager=creator;
minimumContribution=minimum;
}
你可以直接施法:
address newCampaign = address(new Campaign(minimum,msg.sender));
或者更好的是,停止使用 address
并使用更具体的类型 Campaign
:
pragma solidity ^0.5.2;
contract CampaignFactory{
Campaign[] public deployedCampaigns;
function createCampaign(uint minimum) public {
Campaign newCampaign = new Campaign(minimum, msg.sender);
deployedCampaigns.push(newCampaign);
}
function getDeployedCampaigns() public view returns(Campaign[] memory) {
return deployedCampaigns;
}
}
要从另一个合约调用现有合约,在cast中传递合约地址
pragma solidity ^0.5.1;
contract D {
uint x;
constructor (uint a) public {
x = a;
}
function getX() public view returns(uint a)
{
return x;
}
}
contract C {
//DAddress : is the exsiting contract instance address after deployment
function getValue(address DAddress) public view returns(uint a){
D d =D(DAddress);
a=d.getX();
}
}