“Il n'y a pas de constructeur par défaut disponible”--Pourquoi le constructeur par défaut même appelé?

J'ai regardé quelques autres questions à ce sujet, mais je ne vois pas pourquoi un constructeur par défaut devrait même être appelé dans mon cas. Je pourrais juste fournir un constructeur par défaut, mais je veux comprendre pourquoi il fait cela et ce qu'il touche.

error C2512: 'CubeGeometry' : no appropriate default constructor available  

J'ai une classe appelée ProxyPiece avec une variable de membre de CubeGeometry.Le constructeur est censé prendre en CubeGeometry et l'affecter à la variable membre. Voici l'en-tête:

#pragma once
#include "CubeGeometry.h"

using namespace std;
class ProxyPiece
{
public:
    ProxyPiece(CubeGeometry& c);
    virtual ~ProxyPiece(void);
private:
    CubeGeometry cube;
};

et la source:

#include "StdAfx.h"
#include "ProxyPiece.h"

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


ProxyPiece::~ProxyPiece(void)
{
}

l'en-tête cube géométrie ressemble à ceci. Ça n'a pas de sens pour moi d'utiliser un constructeur par défaut. J'ai besoin de lui de toute façon?:

#pragma once
#include "Vector.h"
#include "Segment.h"
#include <vector>

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;
};

OriginalL'auteur AAB | 2013-03-29