Quiero llamar a un método de un contrato de otro contrato. Ya leí este post: llamando a un contrato a otro método de contrato , pero no me funciona.
Cuando creo la persona que llama e intento ejecutar el método Set(), funciona perfectamente, pero si llamo a Get(), siempre devuelve '0'.
¿Alguien me puede ayudar?
Estos son mi código simple:
pragma solidity ^0.4.0;
contract callee{
uint public x;
constructor() public
{
x = 1;
}
function set (uint k) public
{
x = k;
}
function get () public view returns (uint)
{
return x;
}
}
contract caller{
callee c;
constructor() public
{
c = new callee();
}
function get() public view returns (uint k)
{
return c.get();
}
function set(uint k) public
{
c.set(k);
}
function get_calle() public view returns (callee)
{
return c;
}
}
Estoy usando Web3 Provider y Remix para probar.
He intentado llamar a get() desde el receptor de la llamada después de obtener su ubicación y devuelve el valor correcto, por lo que los métodos set() funcionan. ¿Por qué no puedo usar get() de la persona que llama?
¡Gracias!
El que callee
creaste no es con el que caller
está interactuando. Está creando uno nuevo.
Reemplazar
c = new callee();
con
c = callee(0xabcdef);
Pero en lugar de 0xabcdef
poner en la dirección del callee
contrato desplegado.
Pierz___
Una alergia a la analogía
set
decaller
pero solo obtuvoget
un resultado preciso decallee
. Pero cuando copié la dirección decaller
, eliminécaller
y volví a abrir una instancia en esa dirección,get
parece funcionar. ¿Obtienes el mismo resultado?Pierz___
Una alergia a la analogía
Pierz___
Una alergia a la analogía
Pierz___