我想創建一個模板向量,但是當我返回迭代器時出現問題。 我一直在搜索所有的互聯網,並沒有找到任何解決方案。 下面的代碼:返回模板類C++的方法
template <class Element>
class VectorDinamic {
public:
VectorDinamic();
void add(Element el);
Element get(int poz);
~VectorDinamic();
void update(Element el,int poz);
int len();
//template <class Element>
//I get errors here: missing type specifier, unexpected token precedin ";" , missing ";" before "<"
vectorDinamicIterator<Element>* iterator();
void del(Element el);
private:
Element* elems;
int lg;
int capacitate;
void resize();
};
template <class Element>
class vectorDinamicIterator{
public:
vectorDinamicIterator(VectorDinamic* vect){
this->curent=0;
this->vec = vect;
}
Element element()
{
return vec->get(this->curent);
}
void next(){
curent++;
}
private:
int curent;
VectorDinamic* vec;
};
template <class Element>
VectorDinamic<Element>::VectorDinamic() {
capacitate = INIT_CAPACITY;
elems = new Element[capacitate];
lg = 0;
}
//I get errors down here: iterator is not a member of VectorDinamic<Element>,
template <class Element>
vectorDinamicIterator<Element>* VectorDinamic<Element>::iterator()
{
vectorDinamicIterator iter = new vectorDinamicIterator(this);
return iter;
}
我離開了一些方法實現保持代碼的短,我加了註釋,我得到的錯誤,我不知道爲什麼。如果沒有「迭代器」方法,代碼工作得很好。
什麼錯誤?爲什麼所有這些代碼?告訴我們你的[testcase](http://sscce.org)。 **你可能需要'typename'。** –
在class VectorDinamic {'?之前是否有一行'template'丟失了?否則,如何定義「元素」? –
dyp
對不起...等一下,我會編輯 –