これに関する他のいくつかの質問を見てきましたが、私の場合、デフォルトのコンストラクターを呼び出す必要がある理由がわかりません。デフォルトのコンストラクターを提供することもできますが、なぜこれを行うのか、またそれが何に影響するのかを理解したいと考えています。
error C2512: 'CubeGeometry' : no appropriate default constructor available
CubeGeometry のメンバー変数を持つ ProxyPiece というクラスがあります。コンストラクターは、CubeGeometry を受け取り、それをメンバー変数に割り当てることになっています。ヘッダーは次のとおりです。
#pragma once
#include "CubeGeometry.h"
using namespace std;
class ProxyPiece
{
public:
ProxyPiece(CubeGeometry& c);
virtual ~ProxyPiece(void);
private:
CubeGeometry cube;
};
そしてソース:
#include "StdAfx.h"
#include "ProxyPiece.h"
ProxyPiece::ProxyPiece(CubeGeometry& c)
{
cube=c;
}
ProxyPiece::~ProxyPiece(void)
{
}
キューブ ジオメトリのヘッダーは次のようになります。デフォルトのコンストラクターを使用しても意味がありません。とにかく必要ですか?:
#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;
};