我遇到了以下錯誤 - 當我只是先提供類的定義,然後再聲明它。我的理解是,只要我們這樣做,因爲我已經做了很多次函數定義,編譯器得到它,但似乎我的理解是有缺陷的,有人可以幫助我理解理解如何聲明類的缺失部分。錯誤C2027:使用未定義的類型 - 如何聲明類
error C2027: use of undefined type 'generic_iterator'
note: see declaration of 'generic_iterator
不工作 - 上述
#include <iostream>
class generic_iterator;
class darray
{
public:
typedef generic_iterator iterator;
darray();
darray(int size);
~darray();
int& at(int index);
int& operator [](int i);
int* data(void);
bool empty();
void fill(int val);
void print();
size_t max_size();
iterator begin() {return iterator(ptrarray); }
iterator end() { return iterator(ptrarray + size); }
private:
int *ptrarray;
int num_elements;
int size;
};
class generic_iterator
{
public:
generic_iterator(int *ptr);
~generic_iterator();
generic_iterator& operator++(); // pre-increment
generic_iterator operator++(int); // post-increment
private:
int *iptr;
};
作品顯示錯誤:當整個類被聲明爲第一
class generic_iterator
{
public:
generic_iterator(int *ptr);
~generic_iterator();
generic_iterator& operator++(); // pre-increment
generic_iterator operator++(int); // post-increment
private:
int *iptr;
};
class darray
{
public:
typedef generic_iterator iterator;
darray();
darray(int size);
~darray();
int& at(int index);
int& operator [](int i);
int* data(void);
bool empty();
void fill(int val);
void print();
size_t max_size();
iterator begin() {return iterator(ptrarray); }
iterator end() { return iterator(ptrarray + size); }
private:
int *ptrarray;
int num_elements;
int size;
};
謝謝你的回答和糾正我的行話 - 那麼工作方式只是方法來解決錯誤 - 或者在這種情況下還有其他方式來聲明前向聲明? – ifelse
@ifelse我修改了我的答案。 –
啊哈!我現在通常使用.cpp聲明,這次我聲明它是內聯的,而且我遇到了錯誤。我想現在我更好了..感謝很多! – ifelse