El código compila bien. Pero da el siguiente error, cuando se activa el evento LogData. LogAddress funciona bien. ¿Tengo que configurar captadores explícitos para las variables de estado?
Transact to browser/Test.sol:Factory.getContract con error: error de VM: código de operación no válido. El constructor debe pagar si envía valor. La ejecución podría haber tirado. Depure la transacción para obtener más información.
pragma solidity ^0.4.15;
contract TestContract {
uint public iD;
bytes32 public name;
function setAttr(uint _id, bytes32 _name) {
iD = _id;
name = _name;
}
}
contract Factory {
TestContract myTest;
address contractAddress;
function Factory () {
myTest = new TestContract();
myTest.setAttr(100,"0x111");
contractAddress = address(myTest);
}
event LogData(uint _mydata, bytes32 _name);
event LogAddress(address _add);
function getContract() {
myTest = TestContract(contractAddress);
LogAddress(contractAddress);
LogData(myTest.iD(), myTest.name());
}
}
Acabo de jugar con él hasta que funcione.
pragma solidity ^0.4.15;
contract TestContract {
uint public iD;
bytes32 public name;
function TestContract(uint _id, bytes32 _name) public {
iD = _id;
name = _name;
}
}
contract Factory {
TestContract myTest;
TestContract testContract;
function Factory () public {
testContract = new TestContract(100,"0x123");
}
event LogData(uint _mydata, bytes32 _name);
event LogAddress(address _add);
function getContract() public {
LogAddress(testContract);
LogData(testContract.iD(), testContract.name());
}
}
Espero eso ayude.
usuarioDSSR
Rob Hitchens
iD
una función, por lo que necesita()
acceder.