2010-09-19 8 views
13
template<typename T1, typename T2> 
class Bimap { 
public: 
    class Data; 
    typedef Data* DataP;  
    typedef std::multimap<T1, DataP> T1Map; 
    typedef std::multimap<T2, DataP> T2Map; 

    class Data { 
    private: 
     Bimap& bimap; 
     T1Map::iterator it1; 
     /*...*/ 
    }; 
}; 

यह मैं इस संकलन त्रुटि देता है:सी ++: त्रुटि "... प्रकार से प्राप्त नहीं कर रहा है ..."

error: type 'std::multimap<T1, Bimap<T1, T2>::Data*, std::less<_Key>, std::allocator<std::pair<const T1, Bimap<T1, T2>::Data*> > >' is not derived from type 'Bimap<T1, T2>::Data'

कि क्या मतलब है? यहां क्या समस्या है?

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/2841757/c-template- है-नहीं-व्युत्पन्न-से-प्रकार) – Nathan

उत्तर

15

यह:

typename T1Map::iterator it1; 

http://www.parashift.com/c++-faq-lite/templates.html#faq-35.18

[सी ++ टेम्पलेट: 'प्रकार से प्राप्त नहीं कर रहा है'] की
+0

आह, बहुत बहुत धन्यवाद। मैं हमेशा इसके बारे में भूल जाता हूँ। और यह त्रुटि संदेश वास्तव में मुझे इसके बारे में याद दिलाने में सहायक नहीं था। – Albert

+0

+1 मैं इसे पहले पकड़ नहीं पाया :) – Liton

संबंधित मुद्दे