forward declaration 怎么不对呢?
//: C16:IterIntStack.cpp
// Simple integer stack with iterators
//{L} fibonacci
#include "require.h"
#include <iostream>
#include <cstdlib>
using namespace std;
class IntStack {
enum { ssize = 100 };
int stack[ssize];
int top;
public:
IntStack() : top(0) {}
void push(int i) {
stack[top++] = i;
}
int pop() {
return stack[--top];
}
class IntStackIter;//???????????????主要是这里的错误
friend class IntStackIter;
IntStackIter end() {return IntStackIter(*this);}
};
// An iterator is like a "smart" pointer:
class IntStackIter {
IntStack& s;
int index;
public:
IntStackIter(IntStack& is) : s(is), index(0) {}
int operator++() { // Prefix
return s.stack[++index];
}
int operator++(int) { // Postfix
return s.stack[index++];
}
bool operator==(const IntStackIter& isi) const
{
return index==isi.index;
}
bool operator!=(const IntStackIter& isi) const
{
return index!=isi.index;
}
};
int main() {
system("pause");
} ///:~