通过来自不同合约的自动生成的 getter 访问变量

Access variables through auto-generated getters from a different contract

我将我的代币变量存储在主合约之外的一个名为 Storage 的合约中,因此,需要访问自动生成的公开声明变量的 getters与声明它们的合同不同。

contract Storage {

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

}

contract TokenA {

    address public storageAddress;

    function getAllowance(address _owner, address _spender) public returns (uint256) {
        return Storage(storageAddress). allowance( /** ? */);
    }

}

如果不在合约 Storage 中专门定义 getter,我如何访问变量 allowance

你只需要像调用函数一样传入它:

function getAllowance(address _owner, address _spender) public view returns (uint256) {
    Storage s = Storage(storageAddress);
    return s.allowance(_owner, _sender);
}

注意顺序。根据您处理存储的方式,您可能需要更换它。