Ethereum Solidity как развернуть контракт из другого контракта с помощью функции конструктора

Старый способ: функция конструктора совпадает с именем контракта:

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

----------------- == Но теперь новый синтаксис Solidity говорит об использовании «конструктора» в качестве имени функции для конструкторов ...: Предупреждение: определение конструкторов как функций с помощью то же имя, что и договор, не рекомендуется. Вместо этого используйте «конструктор (...) {...}».

 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 (..)   {} 
 } 

----------------- == Пожалуйста, помогите мне. Спасибо.

Ответы (1)

В Remix это компилируется:

 contract CtrtFactory   { 

     Ctrt  ctrt ; 

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

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

Обратите внимание, что конструктор Ctrt действительно называется constructor , но мы вызываем его с помощью new Ctrt()

Вау. Спасибо. Я думаю, что плагин linter моего Visual Studio Code имеет проблемы не использовать последнюю версию компилятора. Спасибо