के लिए टाइप आवश्यकताएं आज मैंने एक नक्शा बनाया, जहां मान प्रकार का कोई डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है। मुझे आश्चर्य हुआ कि मैं इस मानचित्र में तत्वों को सम्मिलित करने के लिए ऑपरेटर [] का उपयोग नहीं कर सका, लेकिन मुझे सम्मिलित विधि का उपयोग करना पड़ा।std :: map
तो, std :: map के लिए कुंजी और मूल्य प्रकारों के लिए वास्तव में क्या आवश्यकताएं हैं?
#include <map>
struct A
{
A(int){}
};
int main()
{
std::map< int, A > m;
A a1(2);
A a2(3);
A a3(4);
m[5] = a1;
m[3] = a2;
m[2] = a3;
}
मैं इस तरह के संकलन कर रहा हूँ:
[[email protected] tmp]$ g++ b5.cpp -Wall -Wextra -ansi -pedantic
/usr/lib/gcc/i386-redhat-linux/4.3.0/../../../../include/c++/4.3.0/bits/stl_map.h: In member function ‘_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = int, _Tp = A, _Compare = std::less<int>, _Alloc = std::allocator<std::pair<const int, A> >]’:
b5.cpp:14: instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.3.0/../../../../include/c++/4.3.0/bits/stl_map.h:419: error: no matching function for call to ‘A::A()’
b5.cpp:5: note: candidates are: A::A(int)
b5.cpp:4: note: A::A(const A&)
सिद्धांत रूप में यह एक अच्छा जवाब है लेकिन यह स्पष्ट नहीं करता है कि ओपी का कोड क्यों विफल हुआ। –
@ कोनराड आह, लेकिन ऐसा इसलिए है क्योंकि मैंने इसका जवाब दिया था इससे पहले कि उसने अपने त्रुटि संदेश पोस्ट किए। वह उस बिंदु पर पोस्ट किया गया था कि यह अभी काम नहीं किया था। – blwy10