ethereum - 通过 new 创建实例时调用方法在另一个合约中失败
问题描述
我正在尝试将合同实例用作另一个合同的变量,例如下面的示例。
pragma solidity ^0.4.23;
contract basic {
uint num1 = 10;
function getNum1() public view returns(uint) {
return num1;
}
function setNum1(uint _num) public returns(uint) {
num1 = _num;
}
}
contract parent {
uint public num2;
basic public b;
constructor() public {
b = new basic();
num2 = 20;
}
function getNum1() public constant returns(uint) {
return b.getNum1();
}
}
而当我在 remix 和 truffle 中测试合约时,它运行良好。 在此处输入图像描述, 但由于我在我的专用网络上部署了合同“父”,parent.getNum1() 返回了“0”而不是“10”。
此外,我尝试了其他类型的构造函数,例如将“基本”地址作为参数,但效果不佳。
我还尝试了一些将另一个合同实例作为变量的合同,它们在专用网络上都无法正常工作。
有人遇到过这个问题吗?帮助!!!
解决方案
现在来结束这个问题!我在 ropsten 测试网络上部署了我的合约,并且合约运行良好。看来我的专用网络不支持从另一个合约调用。有兴趣的可以去看看。
推荐阅读
- r - Rmarkdown - 编织时如何查看警告
- node.js - 刮取数字的字符串
- android - 更新 firebase 构建版本后无法运行应用程序
- scala - SBT:是否可以在 build.sbt 中加载用户类并运行它?
- r - 使用单条从标准条形图(或 ggplot2 geom_col)创建图标
- ios - Swift UINavigation 底线和阴影移除,无需导航栏颜色更改
- javascript - PHP 和 Bootstrap 中的多项目轮播
- typescript - 如何使用接口属性强制对象类型 - 值
- mongodb - MongoDB中子子文档的投影联合
- javascript - 搜索多维 Javascript 数组