我有一个使用Open Zeppelin SafeMath的合约,但派生合约无法识别该声明。
碱性溶胶
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.4;
import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol";
contract Base {
using SafeMath for uint256;
}
测试.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.4;
import "Base.sol";
contract Test is Base {
function getnum(uint256 _number) external view returns (uint256) {
return _number.add(_number);
}
}
但我一直收到这个错误:
Member "add" not found or not visible after argument-dependent lookup in uint256.
using A for B
状态的solidity为0.7,现在我们必须在所有派生合约中重复该语句:
using A for B
只影响其中提到的合同。以前,这种影响是遗传的。现在,你必须重复所有使用该功能的派生合约中的using
语句。
https://solidity.readthedocs.io/en/v0.7.4/070-breaking-changes.html#functions-和事件