solidity - 未声明的标识符。您指的是“_balance”吗?
问题描述
当我在合同中添加其他功能时,什么会导致我之前工作的回收功能突然停止工作?
DeclarationError: Undeclared identifier. Did you mean "_balance"?
uint256 _balance = balances[this];
^^^^^^^^^^
它在此片段中的每个“余额”上进行标记:
function reclaimPAXG() external onlyOwner {
uint256 _balance = balances[this];
balances[this] = 0;
balances[owner] = balances[owner].add(_balance);
emit Transfer(this, owner, _balance);
}
余额映射:
mapping(address => uint256) internal balances;
这是 Solidity 0.8.4,我正在将 IERC20 连接到代币合约中,我尝试了几个潜在的修复。
尝试将其移入 Ownable 合同并保留错误。最接近的其他搜索结果是语法错误,所以我不知道发生了什么。
解决方案
通过将 IERC20 接口移动到其映射所在的代币合约中,能够克服余额错误。最终删除了一个可能导致问题的额外“balanceOf”函数。
推荐阅读
- python - 如何通过 OpenLdap 使用 Python ldap3 验证用户和密码?
- python - 无法使用 Python(子进程)进行 Git 推送?
- android - java.io.IOException:无法运行程序“/data/user/0/packagename/files/ffmpeg”:FFMPEG 错误=13,在 android Q API 级别 29 中权限被拒绝
- .net-4.0 - 用于与遗留系统通信的 Protobuf
- c# - 在winform上将原始图像显示为视频(超过30fps)
- math - 如何计算球体上几何图形的旋转以使它们朝外
- ios - 如何找到最新 iPhone 设备相机的准确视野 (FOV)?
- angular - ionic - 如何在 ionic 5 中使用 Keychain 插件
- ios - 在 iOS 中捕获某些 Firebase 错误无法正常工作
- lua - LUA - ZeroBrane IDE:编译功能