Старый способ: функция конструктора совпадает с именем контракта:
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 (..) {}
}
----------------- == Пожалуйста, помогите мне. Спасибо.
В 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()
Russo