一段C++的代码,请各位高手帮我看一下?

ZQGet 2005-03-13 12:30:56
//说明:我使用的是C++ Builder 6.0,以下代码使用的时候老是出错,请高手帮忙看一下!
//类声明:

class TTile{
private:
Graphics::TBitmap * FBit;//存储图片的Bitmap
public:
TTile(AnsiString sFileName);
TTile(TStream * Stream);
~TTile();
//重载=运算符以便对象间直接赋值
TTile& operator=(const TTile& T);
void Init();
//拷贝构造函数
TTile(const TTile& T);
void loadFromStream(TStream * Stream);
void saveToStream(TStream * Stream);
__property Graphics::TBitmap * Bit = { read=FBit };
};

//类实现:

TTile::TTile(AnsiString sFileName)
{
//TODO: Add your source code here
Init();
FBit->LoadFromFile(sFileName);
}
TTile::TTile(TStream * Stream)
{
//TODO: Add your source code here
Init();
loadFromStream(Stream);
}
void TTile::Init()
{
FBit = new Graphics::TBitmap;
FBit->Width = TILE_WIDTH;
FBit->Height = TILE_HEIGHT;
//设置屏蔽色
FBit->Transparent = true;
FBit->TransparentColor = TRANSPARENT_COLOR;
}
void TTile::loadFromStream(TStream * Stream)
{
//TODO: Add your source code here
TReader* Reader = new TReader(Stream, 2048);
try
{
//加载图形
FBit->LoadFromStream(Stream);
Reader->FlushBuffer();
}
__finally
{
delete Reader;
}
}

void TTile::saveToStream(TStream * Stream)
{
//TODO: Add your source code here
TWriter* Writer = new TWriter(Stream, 2048);
try
{
//存储图片
FBit->SaveToStream(Stream);
Writer->FlushBuffer();
}
__finally
{
delete Writer;
}
}
TTile& TTile::operator=(const TTile &T)
{
if (this != &T)
{
FBit->Assign(T.FBit);//出错代码
}
return *this;
}
TTile::TTile(const TTile& T)
{
*this = T;
}
TTile::~TTile()
{
delete FBit;
}
...全文
481 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZQGet 2005-03-23
  • 打赏
  • 举报
回复
就是游戏程序
fanlitcn 2005-03-21
  • 打赏
  • 举报
回复
是不是游戏程序呀
ZQGet 2005-03-21
  • 打赏
  • 举报
回复
chb2000:谢谢你!我的写法的确有问题!
zblaoshu1979 2005-03-21
  • 打赏
  • 举报
回复
解决了就来接点分吧
ZQGet 2005-03-21
  • 打赏
  • 举报
回复
谢谢,以后我会注意的!
zhousqy 2005-03-14
  • 打赏
  • 举报
回复
up
langzi8818 2005-03-14
  • 打赏
  • 举报
回复
好,楼主以后记得别忙问~
kobefly 2005-03-14
  • 打赏
  • 举报
回复
还要返分
多麻烦啊

就分给这里的弟兄们好了啊

哈哈
tokens 2005-03-14
  • 打赏
  • 举报
回复
晕,解决了??还没来得及看..呵
CloudOfFly 2005-03-14
  • 打赏
  • 举报
回复
UP
小元宝 2005-03-14
  • 打赏
  • 举报
回复
第一,你需要删除掉原先的资源,否则会有泄漏的啊
第二初始化的时候,好像只要Assign就会将原来的FBit的信息也装载进去了啊
第三在你析构的时候最好加上判断指针是否有效的
小元宝 2005-03-14
  • 打赏
  • 举报
回复
你这个好像写的有问题的啊
TTile& TTile::operator=(const TTile &T)
{
if(this ==&T )
return*this;
if( FBit )
delete FBit;



FBit = new Graphics::TBitmap;
FBit->Assign(T.FBit);

return *this;
}
w_freeking 2005-03-14
  • 打赏
  • 举报
回复
看了,楼主自问自答
rocklabzhang 2005-03-14
  • 打赏
  • 举报
回复
我要分!!
foru1971 2005-03-14
  • 打赏
  • 举报
回复
这个是不是没有创建缺省构造方法的原因,即没TTile::TTile(),
照理说,在用=前,两个对象应该都已经初始化了,也就应该经过了init,照楼主写法,可能会有
可能会两次调用init,结果造成内存泄漏。
Qt001 2005-03-14
  • 打赏
  • 举报
回复
给你加积分也可以啊,呵呵,我也长点见识啊
nodummy 2005-03-13
  • 打赏
  • 举报
回复
什么错误你总该说一下吧?
WonderOne 2005-03-13
  • 打赏
  • 举报
回复
帮你up一下
lw1a2 2005-03-13
  • 打赏
  • 举报
回复


似乎自己解决了,可以联系版主返回可用分的,不过我从来没用过
dongpy 2005-03-13
  • 打赏
  • 举报
回复
进来接点分。
加载更多回复(2)

64,651

社区成员

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

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