执行 cl.exe 时出错.主各位高手帮帮忙~

BOBO132 2006-03-26 04:29:33
我在学数据结构时搞了一个数组类,老是出现"执行 cl.exe 时出错"的错误.重装了之后还是不行,不过以前搞的程序又还可以执行..请大家帮帮忙,感谢!!
...全文
426 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxiantong 2006-03-29
  • 打赏
  • 举报
回复
这个问题我也碰到过,不是程序的问题,是软件的问题.建议你下个新的vc再装上.
BOBO132 2006-03-29
  • 打赏
  • 举报
回复
真的非常感谢各位.本人昨晚也弄了很久,修改好了.错误地方也正如各位指出的.非常感谢.要好好向大家学习````
shantai 2006-03-27
  • 打赏
  • 举报
回复
以下纯属个人意见:
主程序有问题:建议改为如下两种方式(为了结果不建议第一种)
No.1
#include <iostream.h>
#include "array.h"
void main(){
int c[20]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0};
array<float> a(15);
for(int k=0, j=0; j<20; j++)
{
if(c[j]!=0) a[k++]=c[j]/2.0; // 主函数显然少了个“{。。。}”组合
a.reSize(k);
}
for(int j=0; j<a.length(); j++) // 然后这里的重新定义“j”
cout<<a[j];
}


No.2

int main()
{
int c[20]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0};
array<float> a(15);
int k=0, j=0; //把定义提前到住户函数中
for(; j<20; j++)
if(c[j]!=0)
a[k++]=c[j]/2.0f;
a.reSize(k);
for(j=0; j<a.length(); j++)
cout<<a[j]<<" ";
cout<<endl;
return 0;
}

No.2 结果为 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
0黄瓜0 2006-03-27
  • 打赏
  • 举报
回复


/////////////////////////////////////////////////////////////////////
//你贴的程序有好几处数入错误,下面已经修改了,编译通过,运行正常。
//建议代码一句一行,'{'也单独成行。
#include <iostream.h>
#include <stdlib.h>
const int DefaultSize=30;
template<class Type>class array
{
public:
array (int Size=DefaultSize);
array (const array < Type > & x);
~array( ){delete [ ] elements ;}
//array < Type > & operator =(const array <Type >& A);
Type& operator [ ] (int i);
Type* operator *() const{return elements ;}
int length() const{return arraySize ;}
void reSize(int sz);
private:
Type * elements ;
int arraySize ;
void getArray( ) ;
};



template<class Type>
void array<Type>::getArray ( )
{
elements = new Type[arraySize ] ;
if(elements == 0)
{
cerr<<"Memory Allocation Error"<<endl;
arraySize = 0;
return;
}
}

template<class Type>
array<Type>::array(int sz=DefaultSize)
{
if ( sz <= 0)
{
cerr<<"Imxilid array Sue"<<endl;
arraySize=0;
elements = 0;
return;
}
arraySize = sz;
getArray ( ) ;
}

template<class Type>
array<Type>::array(const array<Type>&x)//拷贝构造
{
int n = x.arraySize ;
//int arraySize = n; //这里想干嘛,无意中屏蔽了类成员 arraySize
arraySize=n;
elements = new Type[n];
if(elements==0)
{
cerr<<"Memory Allocation Error"<<endl ;
arraySize=0 ;
return ;
}
Type * srcptr = x.elements ;
Type * destptr = elements ;
while(n--)
*destptr++=*srcptr++;
}

template<class Type>
Type &array<Type>::operator [ ] (int i)
{
if (i<0 || i>arraySize-1)
{
cerr<<"Index out of Range"<<endl;
exit(1);
}
return elements [ i ] ;
}

template<class Type>
void array < Type>::reSize(int sz)
{
if ( sz<=0 )
cerr<<"Invalid array Size"<<endl;
if ( sz != arraySize)
{
Type * newarray = new Type[ sz] ;
if(newarray == 0)
{
cerr <<"Memory Allocation Error" <<endl;
return;
}
int n = (sz <= arraySize )?sz:arraySize;
Type * srcptr = elements ;
Type * destptr = newarray ;
while (n--)
*destptr++ = *srcptr++;
delete [ ] elements ;
elements = newarray ;
arraySize = sz;
}
}//reSize()



//#include <iostream.h>
//#include "array.h"
int main()
{
int c[20]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0};
array<float> a(15);
for(int k=0, j=0; j<20; j++)
if(c[j]!=0)
a[k++]=c[j]/2.0f;
a.reSize(k);
for(j=0; j<a.length(); j++)
cout<<a[j]<<" ";
cout<<endl;
return 0;
}
执假以为真 2006-03-27
  • 打赏
  • 举报
回复
你的exe没有关闭
popoxx 2006-03-27
  • 打赏
  • 举报
回复
最大的可能是数组越界
BOBO132 2006-03-27
  • 打赏
  • 举报
回复
#include <iostream.h>
#include "array.h"
void main(){
int c[20]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0};
array<float> a(15);
for(int k=0, j=0; j<20; j++)
if(c[j]!=0) a[k++]=c[j]/2.0;
a.reSize(k);
for(j=0; j<a.length(); j++)
cout<<a[j];
}
这个是主函数,还是不行啦,那个错误还是会出现
BOBO132 2006-03-27
  • 打赏
  • 举报
回复
试一试,感谢啦
turbocamel 2006-03-27
  • 打赏
  • 举报
回复
template<class Type>void array < Type>::reSize(int sz)
'{'和‘}’不匹配,没有其他的问题
BOBO132 2006-03-27
  • 打赏
  • 举报
回复
//#include <iostream.h>
//#include <stdlib.h>
const int DefaultSize=30;
template<class Type>class array{
public:
array (int Size=DefaultSize);
array (const array < Type > & x);
~array( ){delete [ ] elements ;}
//array < Type > & operator =(const array <Type >& A);
Type& operator [ ] (int i);
Type* operator *() const{
return elements ;}
int length() const{return arraySize ;}
void reSize(int sz);
private:
Type * elements ;
int arraySize ;
void getArray( ) ;
};



template<class Type>void array<Type>::getArray ( ) {

elements = new Type[arraySize ] ;
if(elements == 0) {
cerr<<"Memory Allocation Error"<<endl; Arrrrysize = 0; return;}
}

template<class Type>array<Type>::array(int sz) {

if ( sz <= 0){cerr<<"Imxilid array Sue"<<mdl; Amiysize=0; return;}
arraySize = sz;
getArray ( ) ; }

template<class Type>array<Type>::array(const array<Type>&x){

int n = x.arraySize ;
int arraySize = n;
elements = new Typen];
if(elements==0)
{ cerr<<"Memory Allocation Error"<<endl ; arraySize=0 ; return ; }
Type * srcptr = x.elements ;
Type * destptr = elements ;
while(n--) * destptr++=*srcptr++;
}

template<class Type>Type &array<Type>::operator [ ] (int i){

if (i<0 || i>arraySize-1)
{ cerr<<"Index out of Range"<<endl; exit(1);}
return elements [ i ] ;
}

template<class Type>void array < Type>::reSize(int sz){
if ( sz<=0 ) cerr<<"Invalid array Size"<<endl;
if ( sz != arraySize){
Type * newarray = new Type[ sz]
if(newarray = = 0){cerr <<"Memory Allocation Error" <<endl; return; }
int n = (sz <= arraySize )?sz:arraySize;
Type * srcptr = elements ;
Type * destptr = newairay ;
while (n--) * destptr++ = *srcptr++;
delete [ ] elements ;
elements = newarray ; arraySize = sz;
}
这个是数组的模板类,麻烦帮忙看看,先谢谢各位的回复!!
0黄瓜0 2006-03-27
  • 打赏
  • 举报
回复
你自己的数组类写得有问题,如非法访问内存之类的。不是编译通过的程序都没问题的。怎么会首先怀疑系统呢?

64,683

社区成员

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

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