मैं एसटीएल लाइब्रेरी सीखने की कोशिश कर रहा हूं और मुझे एक अजीब समस्या है। इस कोड को पूरी तरह से संकलित:टेम्पलेट कार्यों में वेक्टर इटरेटर के बारे में प्रश्न
template <class T>
void Show2(vector<T> myvec)
{
vector<T>::iterator it;
cout << "Vector contains:";
for(it = myvec.begin(); it < myvec.end(); it++)
{
cout << " " << *it;
}
cout << endl;
}
त्रुटि है:
void Show(vector<int> myvec)
{
vector<int>::iterator it;
cout << "Vector contains:";
for(it = myvec.begin(); it < myvec.end(); it++)
{
cout << " " << *it;
}
cout << endl;
}
जबकि यह एक मेरे संकलन समय पर एक त्रुटि संदेश देता है
$ g++ hello.cpp
hello.cpp: In function ‘void Show2(std::vector<T, std::allocator<_Tp1> >)’:
hello.cpp:19: error: expected ‘;’ before ‘it’
hello.cpp:21: error: ‘it’ was not declared in this scope
यह एक बहुत ही सरल गलती लगता है, लेकिन मुझे यह नहीं मिला।
संभव डुप्लिकेट http://stackoverflow.com/questions/610245/where-to-put-the-template-and-typename- ऑन-आश्रित-नाम) – fredoverflow
संभावित रूप से बहुत पहले उत्तर दिया गया था, लेकिन टाइपनाम/आश्रित नामों की खोज करना मुश्किल है यदि आपको नहीं पता कि ऐसे शब्द मौजूद हैं – Erik
@FredOverflow यह एक बहुत अच्छा लिंक है और मैं शायद इसे पढ़ूंगा अभी। लेकिन, जैसे @Erik ने कहा कि अगर आपको पता नहीं है कि अंतर्निहित समस्या क्या है, तो आप कई विशिष्ट शर्तों की खोज करेंगे और कभी भी अधिक सामान्य समस्या के लिए नहीं खोजेंगे। मैंने इटरेटर्स, टेम्पलेट्स, वेक्टर, एसटीएल, ... के लिए कई खोज कीं और कुछ भी नहीं मिला, मुझे पता नहीं था कि कीवर्ड 'टाइपनाम' अस्तित्व में था (:(हाँ, मैं नोब हूं: पी)। मैंने सोचा कि यह सिर्फ एक बेवकूफ वाक्यविन्यास त्रुटि। –