PDA

View Full Version : کار با iterator



iut.ali
دوشنبه 17 آذر 1393, 17:23 عصر
سلام من یه کلاس نوشتم که میخوام توی تابعی به اسم begin یه iterator برگردونه کدم رو با وکتور نوشتم اینم سورس هدرم
template<typename T1,typename T2>class Map
{
public:
Map() = delete;
Map(T1, T2);
Map(const Map&);
void remove(T1);
void insert(T1, T2);
T2 find(T1);
T2 operator [](const T1);
std::vector<T1> domain();
std::vector<T2> range();
std::vector<T1>::iterator begin()
{
return keyVec.begin();
}


private:
T1 mKey;
T2 mValue;
std::vector<T1> keyVec;
std::vector<T2> valueVec;


};
ولی به کدم ارور میگیره چطوری میتونم یه همچین کاری انجام بدم

rahnema1
دوشنبه 17 آذر 1393, 18:19 عصر
سلام
به این شکل تغییر بدید
typename std::vector<T1>::iterator begin()
علتش اینه که std::vector<T1>::iterator اسمی هست که به پارامتر template بستگی داره . اگر بخواهیم این اسم به عنوان یک «نوع» در نظر گرفته بشه باید حتما قبلش typename بذاریم