Dieser Vertrag implementiert nicht alle Funktionen und kann daher nicht erstellt werden. für myfirstcontract Vertrag Bank arbeitet [geschlossen]

pragma solidity ^0.4.24;

contract Bank {
    uint private value;


    function Bank(uint amount) {
        value = 10;
    }

    function deposit(uint amount) {
        value += amount;
    }


    function balance() constant returns (uint) {
        return value;
    }

}

contract MyFirstContract is Bank {
    string private name;
    uint private age;

    function setName(string newName) {
        name = newName;
    }

    function getName() returns (string) {
        return name;
    }

    function setAge(uint newAge) {
        age = newAge;
    }

    function getAge() returns (uint) {
        return age;
    }
}

Antworten (2)

Ihr untergeordneter Vertrag hat keinen Konstruktor, der den BankKonstruktor von aufrufen würde. Da der BankVertrag einen Konstruktor (mit Parametern) hat, müssen Sie ihn in untergeordneten Verträgen aufrufen.

Wenn Sie also am Anfang Ihres untergeordneten Vertrags so etwas hinzufügen, wird es bereitgestellt:

constructor() Bank(1) {

}

Natürlich sollten Sie sich für die genaue Logik entscheiden, aber hoffentlich verstehen Sie den Punkt.

PS Es wird dringend empfohlen, das Schlüsselwort constructorfür einen Konstruktor zu verwenden. Die Art und Weise, wie Sie Ihren Konstruktor definieren, ist in Solidity Version 0.5 nicht mehr zulässig.

Sie können viele Warnungen bereinigen, indem Sie sie publiczu jeder Funktion hinzufügen.

In BankIhrem Konstruktor akzeptiert ein uintArgument:

function Bank(uint amount)

Da MyFirstContract is BankSie definieren müssen, wie dieser Wert übergeben wird. Fügen Sie beispielsweise einen Konstruktor hinzu:

constructor() Bank(0) {}

Wenn Sie möchten, können Sie das Argument übergeben und an übergeben Bank.

constructor(uint arg1) Bank(arg1) {}

Schauen Sie hier vorbei, um eine detailliertere Erklärung dessen zu erhalten, was hier vor sich geht. Geerbte Konstruktoren

Ich hoffe es hilft.