"बड़े 3" के साथ एक सरल वर्ग ले लो (निर्माता, कॉपी निर्माता, नाशक):वाहक: से निपटने के प्रति निर्माता और नाशक (C++)
#include <vector>
using namespace std; //actually goes in the C file that links to this header file
...
class planets(){ //stores mass and radii data for planets in a solar system.
public:
vector <double> mass;
vector <double> radius;
//constructor
planets(int numObj){
for(int i=0; i<numObj; i++){
mass.push_back(8.0); //some default values.
radius.push_back(2.0);
}
}
//copy constructor
planets(const planets &p){
vector <double> mass(p.mass); //copy vectors into new class.
vector <double> radius(p.radius);
}
//destructor
~planets(){
delete mass; //ERROR: (...) argument given to ‘delete’, expected pointer
~radius(); //also causes error: no match for call to(...)
}
}
मैं ग्रहों का एक वेक्टर बनाने पर योजना, इस प्रकार "बड़ा 3" के लिए की जरूरत:
vector <planets> stars;
stars.push_back(planets(5)); //5 hypothetical planets of alpha centauri
stars.push_back(planets(8)); //our solar system. Used to be nine.
///etc.
मैं कैसे द्रव्यमान और त्रिज्या वैक्टर ठीक से नष्ट कर सकता हूं, मेमोरी लीक (मैं भी करना है) से बचने के लिए?
बीटीडब्ल्यू, आपकी प्रतिलिपि निर्माता (जो बिल्कुल जरूरी नहीं है) ऐसा नहीं कर रहा है जो आपको लगता है कि यह कर रहा है। – jamesdlin
नाइट: बड़े तीन में कॉपी असाइनमेंट ऑपरेटर ('ऑपरेटर =') वेनिला सीटीआर नहीं है। – dirkgently
@dirkgently: यह एक नाइट नहीं है, यह एक मौलिक बिंदु है! –