“No appropriate default constructor available”–Why is the default constructor even called?

Your default constructor is implicitly called here:

ProxyPiece::ProxyPiece(CubeGeometry& c)
{
    cube=c;
}

You want

ProxyPiece::ProxyPiece(CubeGeometry& c)
   :cube(c)
{
    
}

Otherwise your ctor is equivalent to

ProxyPiece::ProxyPiece(CubeGeometry& c)
    :cube() //default ctor called here!
{
    cube.operator=(c); //a function call on an already initialized object
}

The thing after the colon is called a member initialization list.

Incidentally, I would take the argument as const CubeGeometry& c instead of CubeGeomety& c if I were you.

Leave a Comment