title: "No appropriate default constructor available"--Why is the default constructor even called?
body: <p>I've looked at a few other questions about this, but I don't see why a default constructor should even be called in my case. I could just provide a default constructor, but I want to understand why it is doing this and what it affects.</p>
  
  <pre><code>error C2512: 'CubeGeometry' : no appropriate default constructor available  
  </code></pre>
  
  <p>I have a class called ProxyPiece with a member variable of CubeGeometry.The constructor is supposed to take in a CubeGeometry and assign it to the member variable. Here is the header:</p>
  
  <pre><code>#pragma once
  #include "CubeGeometry.h"
  
  using namespace std;
  class ProxyPiece
  {
  public:
      ProxyPiece(CubeGeometry&amp; c);
      virtual ~ProxyPiece(void);
  private:
      CubeGeometry cube;
  };
  </code></pre>
  
  <p>and the source:</p>
  
  <pre><code>#include "StdAfx.h"
  #include "ProxyPiece.h"
  
  ProxyPiece::ProxyPiece(CubeGeometry&amp; c)
  {
      cube=c;
  }
  
  
  ProxyPiece::~ProxyPiece(void)
  {
  }
  </code></pre>
  
  <p>the header for cube geometry looks like this. It doesn't make sense to me to use a default constructor. Do I need it anyways?:</p>
  
  <pre><code>#pragma once
  #include "Vector.h"
  #include "Segment.h"
  #include &lt;vector&gt;
  
  using namespace std;
  
  class CubeGeometry
  {
  public:
      CubeGeometry(Vector3 c, float l);
  
      virtual ~CubeGeometry(void);
  
      Segment* getSegments(){
          return segments;
      }
  
      Vector3* getCorners(){
          return corners;
      }
  
      float getLength(){
          return length;
      }
  
      void draw();
  
      Vector3 convertModelToTextureCoord (Vector3 modCoord) const;
  
      void setupCornersAndSegments();
  
  private:
      //8 corners
      Vector3 corners[8];
  
      //and some segments
      Segment segments[12];
  
      Vector3 center;
      float length;
      float halfLength;
  };
  </code></pre>