Reason for the error:
When you create an instance of derived class NumGame
the Base class Category
no argument constructor is called to create the Category
part of the object. Your class doesn't have one and the compiler complains about it.
Why the compiler did not synthesize the default constructor?
Once you provide any constructor for your class the compiler does not synthesize the constructor which does not take any argument for you, You have to provide that yourself if your code uses one.
Solutions:
There are two ways to avoid the error:
Call the appropriate available constructor in Base class Catoegory
subobject through Member Initializer list. This removes the scenario where your code uses a no argument constructor.
NumGame::NumGame(int& b) : Category(b)
{
}
OR
You need to provide a no argument constrcutor for Category
class yourself:
Category::Category()
{
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…