Solidity
乙太坊 Solidity 如何使用建構子從另一個合約部署合約
老辦法:建構子與合約名稱相同:
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()