Verträge können explizit in und aus dem Adresstyp konvertiert werden. In solidity docs wird erwähnt, dass die Verträge in einen Adresstyp umgewandelt werden können. Aber wenn ich das versuche, gibt mir der Compiler den folgenden Fehler. Explizite Typumwandlung von „Typ(Vertrag)“ in „Adresse“ nicht zulässig
Was ich genau versuche, ist folgendes
contract A {
// some logic
}
contract B {
//some logic
}
contract C{
address a = address(A);
address b = address(B);
}
Der Fehler, den ich bekomme: -
Explizite Typumwandlung von „Typ (Vertrag A)“ in „Adresse“ nicht zulässig. Adresse a = Adresse (A);
Explizite Typumwandlung von „Typ (Vertrag B)“ in „Adresse“ nicht zulässig. Adresse b = Adresse (B);
Dies ist der Link für das Dokument, in dem ich gesehen habe, dass dies möglich ist.
Sie müssen diese Verträge zuerst erstellen, um ihre Adresse zu erhalten, ändern Sie dies:
contract C {
address a = address(A);
address b = address(B);
}
Dazu:
contract C {
address a = address(new A());
address b = address(new B());
}
Dann kannst du sie so lesen:
function getContractAddresses() view public returns(address, address) {
return (a, b);
}
Manas Nanivadekar
Miroslav Nedelchev
contract C
stellt dieser bestimmte Vertrag nach der Bereitstellung auch die VerträgeA
und bereitB
.