乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 56|回复: 3

ResbufPointer类

[复制链接]
538

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2007-4-13 16:02:00 | 显示全部楼层 |阅读模式
我想其他人可能会发现这很有用。这是我今天拼凑的一个快速的小智能指针类,以帮助我避免忘记释放resbuf指针:
  1. class ResbufPointer {
  2.         resbuf* pHead; // Maintain a pointer to the head of the resource chain for de-allocation
  3.         resbuf* pBuffer;
  4. public:
  5.         ResbufPointer(resbuf* ptr) : pHead(ptr), pBuffer(ptr) {}
  6.         ~ResbufPointer() {
  7.                 acutRelRb(pHead); // release the buffer
  8.                 pHead = pBuffer = 0;
  9.         }
  10.         resbuf* operator->() { return pBuffer; }  // so you can do things like buf->resval.rstring
  11.         operator resbuf*() { return pBuffer; } // so you can pass the smart pointer to functions that expect a resbuf*
  12.         bool isNull() { return pBuffer == 0; } // null pointer check
  13.         void start() { pBuffer = pHead; } // in case you need to return to the head of the resource chain
  14.         void next() { pBuffer = pBuffer->rbnext; } // try to move the pointer to the next item in the resource chain
  15. };

在如此琐碎的事情上将实现与接口分开似乎很傻,所以我只是把它们都放在一起。
添加了一些注释。更改了愚蠢的变量名称。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2007-4-15 09:41:29 | 显示全部楼层
我喜欢,我想知道resbuf是否有智能指针,我想是的
谢谢Chuck
回复

使用道具 举报

0

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
8
发表于 2007-4-15 15:06:20 | 显示全部楼层
结构resbuf的类包装器的另一个示例是ArxDbgRbList(来自ObjectARX SDK中的ArxDbg示例)
回复

使用道具 举报

0

主题

4

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2007-4-15 21:59:29 | 显示全部楼层
谢谢亚历山大。我从没在样本中注意到这一点。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-6 01:07 , Processed in 0.152230 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表