Bu konuyla ilgili başka birkaç soruya da baktım, ancak davamda neden varsayılan bir kurucunun bile çağrılacağını anlamıyorum. Sadece bir varsayılan kurucu sağlayabilirdim, ancak bunun neden bunu yaptığını ve neyin etkilediğini anlamak istiyorum."Uygun varsayılan kurucu yok" - Varsayılan kurucu neden çağrılıyor?
error C2512: 'CubeGeometry' : no appropriate default constructor available
Ben CubeGeometry.The yapıcı bir üyesi değişkeni CubeGeometry almak ve üye değişkeni atamak gerekiyordu ile ProxyPiece adlı bir sınıf var.
#pragma once
#include "CubeGeometry.h"
using namespace std;
class ProxyPiece
{
public:
ProxyPiece(CubeGeometry& c);
virtual ~ProxyPiece(void);
private:
CubeGeometry cube;
};
ve kaynak:
#include "StdAfx.h"
#include "ProxyPiece.h"
ProxyPiece::ProxyPiece(CubeGeometry& c)
{
cube=c;
}
ProxyPiece::~ProxyPiece(void)
{
}
küp geometri için üst bilgisi aşağıdaki gibidir Burada başlıktır. Varsayılan bir kurucu kullanmak benim için mantıklı değil. Ben onun gerek musunuz ?:
Varsayılan yapıcı örtülü burada denir#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;
};
Daha net olmak gerekirse, belki de "snippet ile aynıdır" ifadesini kullanarak, "cube = c;", "cube.operator = (c);" ifadesini kullanabilirsiniz. Ödevin (bir dil açısından) “küp” ü yeniden başlatmamasını açıklamaya yardımcı olur. – hvd
@hvd: üzerinde anlaşılmış, düzenleme –
Bu nedenle, herhangi bir üye değişkeninin tüm varsayılan kurucuları, yapıcıdan önce içeren sınıfa çağrılır mı? (ve evet bir const yapacağım :)) – AAB