我遇到了以下错误 - 当我只是先提供类的定义,然后再声明它。我的理解是,只要我们这样做,因为我已经做了很多次函数定义,编译器得到它,但似乎我的理解是有缺陷的,有人可以帮助我理解理解如何声明类的缺失部分。错误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