Solidity

乙太坊 Solidity 如何使用建構子從另一個合約部署合約

  • April 19, 2018

老辦法:建構子與合約名稱相同:

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

—————–== 但是現在新的 Solidity 語法說使用“constructor”作為建構子的函式名……:警告:將建構子定義為函式不推薦使用與契約相同的名稱。請改用“建構子(…){…}”。

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

—————–== 請幫幫我。謝謝你。

在 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()

引用自:https://ethereum.stackexchange.com/questions/46131