I am new to C ++ and want to play around with classes.
My code
There are gerons and swords in my world. Heros carry swords. It should not be too complicated.
class Sword
{
int lenght;
public:
Sword(int swordlength){
lenght = swordlength;
};
~Sword(){};
};
class Hero
{
Sword magic_sword;
public:
Hero(){
int meters = 2;
magic_sword = Sword(meters);
};
~Hero(){};
};
int main(){
return 0;
}
What the compiler thinks about it
When I compile this code ( g++ hero.cpp
), I get an error:
In constructor 'Hero::Hero()':
20:9: error: no matching function for call to 'Sword::Sword()'
20:9: note: candidates are:
8:3: note: Sword::Sword(int)
8:3: note: candidate expects 1 argument, 0 provided
2:7: note: constexpr Sword::Sword(const Sword&)
2:7: note: candidate expects 1 argument, 0 provided
What i think about the problem
Compiling code with help clang++
also fails, but the error message is not so explicit, so I won’t post it here.
It seems that the constructor call Sword(meters)
failed because I gave 0 instead of 1 argument. But I clearly gave him an argument ( meters
), so I think I missed something.
What is my mistake and what can I do about it?
source
share