我正在尝试从 Maker 合约创建 Taker 合约的新实例并向其发送一些价值。
然后稍后我想从 Taker 合约中将一个值发送回 Maker 合约
maker.change.value(5)(y);
但是它找不到名为“change”的函数并引发错误。我能想到的唯一可能的解释是它们需要异步执行但同时编译。
Untitled:27:3: Error: Member "change" not found or not visible after argument-dependent lookup in address
maker.change.value(5)(y);
^----------^
(这在 Browser Solidity、Ethereum Studio 和 Truffle 中进行了测试 - 都带有相同的错误消息)
下面是完整的代码。
对于如何解决这个问题(和或参考)的任何建议,我将不胜感激。
谢谢!
pragma solidity ^0.4.2;
contract Maker {
uint x;
function Maker() {
x = 5;
Taker take = new Taker(this, 2);
bool a = take.call.gas(200000).value(10)();
}
function change(uint val) external payable {
x = val;
}
}
contract Taker {
uint y;
address maker;
function Taker(address makerAddr, uint val) {
y = val;
maker = makerAddr;
}
function sendChange() {
maker.change.value(5)(y);
}
}