Aufrufen einer einfachen Funktion aus einem anderen Vertrag

Ich habe Probleme beim Aufrufen der Funktion y() im Pullother-Vertrag. Die Eingabe für die Funktion y() ist die Ausgabe der Funktion g(). Wenn ich y() mit dieser Eingabe aufrufe, ist die Ausgabe leer ('' um genau zu sein) und nicht 15. Ich bin mir nicht ganz sicher, was ich hier falsch mache, da dies mit den Beispielen übereinzustimmen scheint, die ich online von Leuten sehe erfolgreiches Aufrufen von Funktionen aus anderen Verträgen.

Unten ist Untitled.sol

    pragma solidity ^0.4.6;

    contract helloworld {

    function f() returns (uint){
    return 15;
    }

    }

Das Folgende ist der Vertrag, den ich verwenden möchte, um die Funktion f() im Vertrag helloworld aufzurufen.

pragma solidity ^0.4.6;

import "./Untitled.sol";

contract pullother {
address public hello;

function g() returns (address){
    hello = new helloworld();
    return hello;
}

function y(address contractadd) returns (uint){
    helloworld h = helloworld(contractadd);
    h.f();
}
}

Antworten (1)

Ich habe Ihren Code im Solidity-Browser ausprobiert und er funktioniert

Geben Sie hier die Bildbeschreibung ein

Ich denke, Sie müssen verwenden

return h.f()
Ich konnte die Funktion f() direkt aufrufen. Ich kann die Funktion f() nicht aufrufen, indem ich die Funktion y() aufrufe, wobei die Eingabe die Ausgabe der Funktion g() ist. Konnten Sie dies tun?
Ja, überprüfen Sie die Bearbeitung