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;
}
}
Ihr untergeordneter Vertrag hat keinen Konstruktor, der den Bank
Konstruktor von aufrufen würde. Da der Bank
Vertrag 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 constructor
fü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 public
zu jeder Funktion hinzufügen.
In Bank
Ihrem Konstruktor akzeptiert ein uint
Argument:
function Bank(uint amount)
Da MyFirstContract is Bank
Sie 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.