Solidity-0.5.x
require(msg.sender.call(’’)): 在依賴於參數的查找後沒有找到匹配的聲明
我正在嘗試編譯以下 Solidity 程序:
pragma solidity ^0.5.9; contract Mutex { bool locked; modifier noReentrancy() { require(!locked); locked = true; _; locked = false; } function f() noReentrancy public returns (uint) { require(msg.sender.call("")); return 1; } }
我收到以下錯誤消息:
solc Mutex.sol Mutex.sol:13:7: Error: No matching declaration found after argument-dependent lookup. require(msg.sender.call("")); ^-----^
有人,請指導我。
之前的 solc 0.5.0,
call
返回bool
.從 solc 0.5.0 開始,
call
返回(bool, bytes memory)
.由於您使用的是 solc 0.5.x,因此請更改:
require(msg.sender.call(""));
對此:
(bool success,) = msg.sender.call(""); require(success);
有趣的是,您的整個程式碼(正確)出現在官方文件中。