返回信息流#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
class PrimArr {
private:
int * prim;
int size;
bool IsPrim(const int &, const int &);
void Init();
public:
PrimArr(int insize = 100) : size(insize) {
prim = new int [size];
Init();
}
~ PrimArr() {
delete prim;
size = 0;
}
const int * arr();
};
bool PrimArr :: IsPrim(const int & e, const int & valid)
{
for (int i = 0; i < valid; i ++)
if (e % prim[i] == 0)
return 0;
return 1;
}
void PrimArr :: Init()
{
int valid = 0;
system("pause"); //不加这行停顿,则程序运行非法中止;加了后却一切正确。。求大牛解释。。。
for (int i = 2; valid < 100; i ++)
if (IsPrim(i, valid))
prim[valid ++] = i;
}
const int * PrimArr :: arr()
{
return (const int *)prim;
}
int main()
{
PrimArr pa(10);
for (int i = 0; i < 10; i ++)
cout << pa.arr()[i] << endl;
system("pause");
return 0;
}
环境:DevCPP,WinXP SP2
这是一条镜像帖。来源:北邮人论坛 / cpp / #45557同步于 2010/11/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[已解决]C++求前10个素数的程序错误求助。
horikita
2010/11/2镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
确实。。一开始我也是设计成size的。。竟然写错了没发现。。
谢谢啊。。
【 在 ericyosho (ericyosho) 的大作中提到: 】
: 因为你的Init函数里面,要把100改成size。
: 不然你main函数里面,只分配了10个空间,就内存挂掉了