„Brak odpowiedniego domyślnego konstruktora” - Dlaczego wywoływany jest domyślny konstruktor?
Sprawdziłem kilka innych pytań na ten temat, ale nie rozumiem, dlaczego domyślny konstruktor powinien być nawet wywoływany w moim przypadku. Mógłbym po prostu dostarczyć domyślny konstruktor, ale chcę zrozumieć, dlaczego to robi i na co wpływa.
error C2512: 'CubeGeometry' : no appropriate default constructor available
Mam klasę o nazwie ProxyPiece ze zmienną składową CubeGeometry. Konstruktor powinien przyjąć CubeGeometry i przypisać ją do zmiennej składowej. Oto nagłówek:
#pragma once
#include "CubeGeometry.h"
using namespace std;
class ProxyPiece
{
public:
ProxyPiece(CubeGeometry& c);
virtual ~ProxyPiece(void);
private:
CubeGeometry cube;
};
i źródło:
#include "StdAfx.h"
#include "ProxyPiece.h"
ProxyPiece::ProxyPiece(CubeGeometry& c)
{
cube=c;
}
ProxyPiece::~ProxyPiece(void)
{
}
nagłówek geometrii kostki wygląda tak. Nie ma sensu używać domyślnego konstruktora. Czy i tak tego potrzebuję ?:
#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;
};