forward declaration 怎么不对呢?

renheihei 2004-08-11 10:02:30
//: 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");
} ///:~
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
expert2000 2004-08-12
  • 打赏
  • 举报
回复
studying
renheihei 2004-08-12
  • 打赏
  • 举报
回复
谢谢,RookieStar,但是,那不是限制太大了吗?非得写到IntStackIter 实现的后面的话?
RookieStar 2004-08-11
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstdlib>
using namespace std;

class IntStackIter;

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];
}

friend class IntStackIter;
IntStackIter end();
};

// 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;
}
};

IntStackIter IntStack::end() {return IntStackIter(*this);}

int main() {
system("pause");
} ///:~

前面没看清楚。。。
renheihei 2004-08-11
  • 打赏
  • 举报
回复
error:
return type `struct IntStackIter' is incomplete
RookieStar 2004-08-11
  • 打赏
  • 举报
回复
#include "require.h"
#include <iostream>
#include <cstdlib>
using namespace std;

class IntStackIter;//???????????????主要是这里的错误

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];
}
friend class IntStackIter;
IntStackIter end() {return IntStackIter(*this);}
};

这样试试!

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧