Cómo obtener el token-saldo de un token externo en mi contrato

Estoy construyendo un contrato simbólico con una función de compra y venta. El usuario debería poder comprar mi token no solo por eth sino también por otro token que yo defina. Por lo tanto, necesito el mapeo de saldo del token externo en mi contrato. He intentado:

contract externalToken {
   function transfer(address receiver, uint amount){  }
   mapping (address => uint256) public balanceOf; }

y en mi función de compra:

... 

amount = externalToken.balanceOf[msg.sender] / buyPrice; 

...

Pero muestra este error:

La expresión indexada tiene que ser un tipo, mapeo o matriz (es función (dirección) devuelve (uint256)) if (exchangeToken.balanceOf[msg.sender] < buyPrice) throw;

¿Cómo hacer eso bien?

Respuestas (1)

Consulte ¿Cómo obtengo un reembolso por el monto que pagué en exceso de 1 éter a 100 tokens DAO para ver un ejemplo de trabajo?

Hay un ExtraBalTokencontrato con un balanceOf(...)método:

contract ExtraBalToken {
    ...
    mapping (address => uint256) public balanceOf;
    ...
}

Para acceder ExtraBalToken.balanceOf(...)desde WithdrawDAO:

contract DAO {
    function balanceOf(address addr) returns (uint);
    ...
}

contract WithdrawDAO {
    DAO constant public mainDAO = DAO(0x5c40ef6f527f4fba68368774e6130ce6515123f2);
    ...

    function withdraw(){
        uint balance = mainDAO.balanceOf(msg.sender);

        if (!mainDAO.transferFrom(msg.sender, this, balance) || !msg.sender.send(balance))
            throw;
    }
    ...
}