Der Code lässt sich gut kompilieren. Aber es gibt den folgenden Fehler, wenn das Ereignis LogData aktiviert ist. LogAddress funktioniert gut. Muss ich explizite Getter für die Zustandsvariablen einrichten?
transact to browser/Test.sol:Factory.getContract errored: VM error: invalid opcode. Der Konstruktor sollte zahlbar sein, wenn Sie einen Wert senden. Die Hinrichtung könnte geworfen haben. Debuggen Sie die Transaktion, um weitere Informationen zu erhalten.
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());
}
}
Ich habe nur herumgespielt, bis es funktioniert.
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());
}
}
Ich hoffe es hilft.
userDSSR
Rob Hitchens
iD
eine Funktion, also muss darauf()
zugegriffen werden.