Ethereum Solidity Wie wird ein Vertrag aus einem anderen Vertrag mit Konstruktorfunktion bereitgestellt?

Der alte Weg: Konstruktorfunktion ist der gleiche wie der Vertragsname:

 contract CtrtFactory   { 
   function  makeCtrt ()   { address ctrtAddress =   new   Ctrt (...); 
   } 
 } contract Ctrt ()   { 
   function   Ctrt (..)   {} 
 } 

----------------- == Aber jetzt sagt die neue Solidity-Syntax, dass "Konstruktor" als Funktionsname für Konstruktoren verwendet werden soll ...: Warnung: Konstruktoren als Funktionen mit dem definieren Der gleiche Name wie der Vertrag ist veraltet. Verwenden Sie stattdessen "Konstruktor (...) {...}".

 contract CtrtFactory   { 
   Ctrt  ctrt ; 
   function  makeCtrt ()   { address ctrtAddress =   Ctrt . constructor (...); // This gives me ERROR... 
   //but I don't know how to fix this.. adding "new" keyword does not help... 
   } 
 } contract Ctrt ()   { 
   function   constructor (..)   {} 
 } 

----------------- == Bitte helfen Sie mir. Vielen Dank.

Antworten (1)

In Remix wird Folgendes kompiliert:

 contract CtrtFactory   { 

     Ctrt  ctrt ; 

     function  makeCtrt ()   { 
         Ctrt  newCtrt =   new   Ctrt (); emit CtrtCreated ( newCtrt ); 
     } 

     event   CtrtCreated ( Ctrt  ctrt ); 
 } contract Ctrt   { 
     function   constructor ()   {} 
 } 

Beachten Sie, dass der Konstruktor von Ctrt zwar als constructor wird, wir ihn jedoch mit new Ctrt()

Beeindruckend. Vielen Dank. Ich denke, das Linter-Plugin meines Visual Studio-Codes hat Probleme, die neueste Compiler-Version nicht zu verwenden. Vielen Dank