मैं एक कक्षा को डिजाइन कर रहा हूं जिसमें std::vector<int>
एक आवृत्ति चर के रूप में है। मैं std::vector
का उपयोग कर रहा हूं क्योंकि मुझे रनटाइम पर अपना आकार सेट करने की आवश्यकता है। यहाँ मेरी कोड के प्रासंगिक अंश इस प्रकार हैं:कक्षा निर्माणकर्ता में सेटअप std :: वेक्टर
my_class.h:
#include <vector>
using std::vector;
class MyClass {
int size;
vector<int> vec;
}
my_class.cc:
#include "my_class.h"
using std::vector
MyClass::MyClass(int m_size) : size(m_size) {
vec = new vector<int>(size,0);
}
जब मैं मैं इन त्रुटि संदेश प्राप्त संकलन करने का प्रयास:,
g++ -c -Wall my_class.cc -o my_class.o
my_class.cc: In constructor ‘MyClass::MyClass(int):
my_class.cc:4 error: no match for ‘operator=’ in ‘((MyClass*)this)->My_Class::vec = ((*(const allocator_type*)(& std::allocator<int>())), (operator new(24u), (<statement>, ((std::vector<int>*)<anonymous>))))’
make: *** [my_class.o] Error 1
लेकिन जब मैं करने के लिए हमलावर लाइन बदलने के लिए:
vector<int> temp(size,0);
vec = temp;
अब यह एक झुकाव के बिना संकलित करता है और मुझे वांछित व्यवहार मिलता है और
के रूप में मेरे वेक्टर तक पहुंच सकता हैयह कामकाज ठीक है, लेकिन मैं समझना चाहता हूं कि यह क्यों काम करता है और पहली विधि विफल हो जाती है। अग्रिम में धन्यवाद।
'नई vector' एक सूचक एक मान देता है नहीं, आप अपने सदस्य चर निर्दिष्ट करने के लिए सक्षम होने के लिए के लिए' vec' – Chethan
मेरा अनुमान है आप जावा से आ रहा है या सी # और यदि हां, तो मेरी सलाह है गंभीर पहले एक अच्छी, प्रारंभिक सी ++ पुस्तक प्राप्त करने के लिए। –
और प्रतिलिपि + पेस्ट विधि के माध्यम से हमेशा वास्तविक कोड पोस्ट करें। आपके द्वारा पोस्ट किया गया कोड अधूरा –