首页 > 解决方案 > 未声明的标识符。您指的是“_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 合同并保留错误。最接近的其他搜索结果是语法错误,所以我不知道发生了什么。

标签: solidityremixundeclared-identifier

解决方案


通过将 IERC20 接口移动到其映射所在的代币合约中,能够克服余额错误。最终删除了一个可能导致问题的额外“balanceOf”函数。


推荐阅读