“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, … Read more