pragma solidity ^0.4.24;
contract Bank {
uint private value;
function Bank(uint amount) {
value = 10;
}
function deposit(uint amount) {
value += amount;
}
function balance() constant returns (uint) {
return value;
}
}
contract MyFirstContract is Bank {
string private name;
uint private age;
function setName(string newName) {
name = newName;
}
function getName() returns (string) {
return name;
}
function setAge(uint newAge) {
age = newAge;
}
function getAge() returns (uint) {
return age;
}
}
Your child contract does not have a constructor which would call the Bank
's constructor. As the Bank
contract has a constructor (with parameters), you have to call it in child contracts.
So adding something like this at the beginning of your child contract will make it deploy:
constructor() Bank(1) {
}
Of course you should decide on the exact logic, but hopefully you get the point.
P.S. Is is strongly encouraged to use the keyword constructor
for a constructor. The way you are defining your constructor will not be allowed anymore in Solidity version 0.5.
You can clean up a lot of warnings by adding public
to each function.
In Bank
your constructor accepts a uint
argument:
function Bank(uint amount)
Since MyFirstContract is Bank
you need to define how this value will passed in. For example, add a constructor:
constructor() Bank(0) {}
If you want, you can pass the argument in and pass it through to Bank
.
constructor(uint arg1) Bank(arg1) {}
Have a look over here for a more detailed explanation of what's going on here. Inherited Constructors
Hope it helps.