The most likely cause is that since your Levelnode
struct:
struct Levelnode
{
Level L;
Levelnode * next;
};
has a Level
member, and Level
lacks a default ctor, the default, compiler-generated ctor for Levelnode
cannot initialize the Levelnode::L member. The result is that the compiler does not actually generate a default Levelnode
ctor at all. If you try to create a Levelnode
:
Levelnode node;
you will get an error about Levelnode
not having a default ctor.
You need to provide your own default ctor for Levelnode
which should initialize Levelnode::L using an appropriate L
ctor. Like:
struct Levelnode
{
Level L;
Levelnode * next;
Levelnode()
: L(ctor arguments)
{ }
};
Another solution would be to provide a default ctor for Level
, if that makes sense for that class.