大家看看我写的这个类,问题很多啊 :(

aniude 2005-06-20 01:14:27
#include <stdio.h>
#include <iostream.h>
#include <string.h>
const int N = 100;
class stringLei
{
private:
char * str;
int length;
public:
stringLei(char * strT)
{
if((str = new char[N])==NULL)
{
exit(1);
}
else
{
str = strT;
length = strlen(strT);
}
}
~stringLei()
{
delete[]str;
}
void set(char * strU)
{
str = strU;
}
void show()
{
cout<<str<<endl;
}
int getlen()
{
return length;
}
};
void main(int argc, char* argv[])
{
stringLei S("this is a bird");
}
显示exit没有定义?
用new 分配空间的时候又报错?
...全文
161 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousqy 2005-06-24
  • 打赏
  • 举报
回复
new不成功会抛出bad_alloc的异常。
siyang 2005-06-24
  • 打赏
  • 举报
回复
没说你的析构函数有问题啊,构造函数不一样啊
guileen 2005-06-24
  • 打赏
  • 举报
回复
//析构函数这样写
~stringLei()
{
if(str) delete[]str;
}
aniude 2005-06-21
  • 打赏
  • 举报
回复
TO: OpenHero(雨流星)
析构函数要怎么改才行呀?
siyang 2005-06-21
  • 打赏
  • 举报
回复
改了
析构函数为
{

}
是不厚道的^_^
aniude 2005-06-21
  • 打赏
  • 举报
回复
那看看我原来的程序,析构函数跟他是一样的啊!
siyang 2005-06-21
  • 打赏
  • 举报
回复
像 wkjs() 这样写就ok了
wkjs 2005-06-20
  • 打赏
  • 举报
回复
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
const int N = 100;
class stringLei
{
private:
char * str;
int length;
public:
stringLei(char * strT):str(NULL),length(0)
{
str = new char[N];
if(str==NULL)
{
exit(1);
}
else
{
strcpy(str,strT);
length = strlen(strT);
}
}
~stringLei()
{
delete[]str;
}
void set(char * strU)
{
if(str)
delete[]str;
str = new char[N];
strcpy(str,strU);
length = strlen(strU);
}
void show()
{
cout<<str<<endl;
}
int getlen()
{
return length;
}
};
void main(int argc, char* argv[])
{
stringLei S("this is a bird");
S.show();
}
OpenHero 2005-06-20
  • 打赏
  • 举报
回复
楼主的析构函数就可以:)
~stringLei()
{
delete[]str;
}
aniude 2005-06-20
  • 打赏
  • 举报
回复
多谢大家了,改了
析构函数为
{

}
就可以运行了,
但如同楼上说的要释放str怎么办?
andy_bin 2005-06-20
  • 打赏
  • 举报
回复
'

学习ing......


OpenHero 2005-06-20
  • 打赏
  • 举报
回复
to:逍遥
//将你的析构函数改成这样,就勉强行了~!
//-_-...


~stringLei()
{ }

这样改以后什么地方释放str??:)
嘿嘿~~~
OpenHero 2005-06-20
  • 打赏
  • 举报
回复
1,如果是vc6和vc.net的调试环境
头文件这样改:
#include <stdio.h>
#include <iostream>
#include <string>

using namespace std;

2, if((str = new char[N])==NULL) 是什么意思???
怎么能这样写?
(1),这样写本身就不好看
(2),应该这样改
str = new char[N];
if( str ==NULL)
andy_bin 2005-06-20
  • 打赏
  • 举报
回复
//将你的析构函数改成这样,就勉强行了~!
//-_-...


~stringLei()
{ }
andy_bin 2005-06-20
  • 打赏
  • 举报
回复
exit()

//要加#include<stdlib.h>
aniude 2005-06-20
  • 打赏
  • 举报
回复
当str改为公共变量的时候分配空间就不会报错了,为什么??
OpenHero 2005-06-20
  • 打赏
  • 举报
回复
说明你的编译环境有问题
还有就是头文件有问题
把你的编译环境说一下:)

64,654

社区成员

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

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