【发布时间】:2015-11-27 21:29:05
【问题描述】:
我遇到了以下错误 - 当我先提供类的定义然后再声明它时。我的理解是,只要我们这样做,因为我已经为函数定义做了很多次,编译器会理解它,但似乎我的理解有缺陷,有人可以帮助我理解在理解如何声明类方面缺少的部分。
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;
};
【问题讨论】:
标签: c++ class syntax forward-declaration