के साथ ओवरलोडिंग [] ऑपरेटर की समस्याएं मुझे C++ में टेम्पलेट क्लास के साथ सबस्क्रिप्ट ऑपरेटर को ओवरलोड करने में समस्याएं आ रही हैं। मेरे पास कस्टम मैप क्लास कार्यान्वयन है और मुझे कुंजी के माध्यम से तत्वों तक पहुंचने में सक्षम होना चाहिए।एक टेम्पलेट वर्ग
template <typename K, typename DT>
DT& myMap<K, DT>::operator[](K key)
{
for (int i = 0; i<size; i++)
{
if (elements[i].key == key){
return elements[i].data;
}
}
}
कैसे मैं इस समय ऑपरेटर को ओवरलोड कोशिश कर रहा हूँ है। संकलक डेटा की खोज के लिए के कुंजी स्वीकार नहीं करता है। कुंजी कुंजी के लिए डेटा प्रकार है। यह एक अलग वर्ग में संग्रहीत है कि myMap क्लास एक सरणी में है।
तो अगर मुख्य में मैं करने की कोशिश:
myMap<string, int> * test = new myMap < string, int > ;
test["car"] = 50;
इसे कहते हैं:
Error expression must have an integral or unscoped enum type
मैं काफी यकीन है कि समस्या क्या है नहीं कर रहा हूँ।
क्यों बस का उपयोग नहीं 'myMap परीक्षण; 'और फिर' परीक्षण ["कार"] 'अपेक्षित के रूप में काम करेगा। –
समस्या यह है कि आप 'नई' अनावश्यक रूप से उपयोग कर रहे हैं, जो एक बुरी आदत है जिसे सी ++ में टालना चाहिए। यह जावा या सी # नहीं है। –