मैंने इसके बारे में कुछ अन्य प्रश्नों को देखा है, लेकिन मुझे नहीं पता कि मेरे मामले में एक डिफ़ॉल्ट कन्स्ट्रक्टर को क्यों बुलाया जाना चाहिए। मैं सिर्फ एक डिफ़ॉल्ट कन्स्ट्रक्टर प्रदान कर सकता था, लेकिन मैं समझना चाहता हूं कि यह क्यों कर रहा है और यह क्या प्रभावित करता है।"कोई उचित डिफ़ॉल्ट कन्स्ट्रक्टर उपलब्ध नहीं है" - डिफ़ॉल्ट कन्स्ट्रक्टर को क्यों बुलाया जाता है?
error C2512: 'CubeGeometry' : no appropriate default constructor available
मैं एक वर्ग CubeGeometry.The निर्माता के एक सदस्य चर एक CubeGeometry में लेने के लिए और सदस्य चर निर्दिष्ट करने के लिए माना जाता है के साथ ProxyPiece कहा जाता है।
#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;
};
यहां तक कि स्पष्ट होने के लिए, शायद आप अपने "स्निपेट के समान" हो सकते हैं, 'cube = c;' 'cube.operator = (c);' में बदलें। इससे यह समझने में मदद मिलेगी कि असाइनमेंट (भाषा परिप्रेक्ष्य से) 'क्यूब' को फिर से शुरू नहीं करता है। – hvd
@hvd: –
संपादित करने पर सहमत हुए, तो किसी भी सदस्य चर के सभी डिफॉल्ट कन्स्ट्रक्टर को कन्स्ट्रक्टर से पहले कक्षा में बुलाया जाता है? (और हाँ मैं इसे एक स्थिर बना दूंगा :)) – AAB