Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > symbian 下 APP 中使用 singleton
【标  题】:symbian 下 APP 中使用 singleton
【关键字】:symbian,APP,singleton
【来  源】:BLOG.CSDN.NET

symbian 下 APP 中使用 singleton

Your Ad Here

下面这个是基于Noka 中的"tip of this month"中提供的一个例子而实现singleton的另外一种方式:

#include <coemain.h>

template<class T>
class DefaultCreator
{
public:
    static T * Create()
    {
        return new (ELeave)T;
    }
};

template<class T, TInt Id, class Creator = DefaultCreator<T> >
class CStaticData : public CCoeStatic
{
public:
    static T* Instance()
    {
        CStaticData* instance = static_cast<CStaticData*> ( CCoeEnv::Static( TUid::Uid( Id ) ));
   
        if ( !instance )
        {
            sbl::CPtr<CStaticData> data( new (ELeave)CStaticData);
            data->t = Creator::Create();
            instance = data.release();
        }
        return instance->t;
    }

    ~CStaticData()
    {
        delete t;
    }
   
private:
    CStaticData(TScope scope = EThread) : CCoeStatic(TUid::Uid(Id), scope)
    {
    }

 
    T *  t;
};

使用:

TRect* rc = CStaticData<TRect, 1>::Instance();
rc->iTl.iX = 10;
rc->iTl.iY = 11;

或者, 如果你的class T有自己的NewL等函数, 那么提供第3个模板参数Creator.

其中用到我前面说到的智能指针, 这个确实是个好东西, 用过以后我再也没有遇到内存泄漏, 由于CleanupStack引起的Panic.

begin linux programming:【上一篇】
(转载)Bro NIDS的规则:【下一篇】
【相关文章】
  • CIW Application Developer (应用程序开发专家)
  • Application Server产品简介
  • Application Server主要特色
  • Application Server明细列表
  • Application Server额外功能
  • Illustrator 中Apprearance面板的一点使用体会(1)
  • Illustrator 中Apprearance面板的一点使用体会(2)
  • AI的Appearance面板浅析
  • 用Application知识对象制作多媒体CAI应用程序
  • NDIS wrapper for FreeBSD 5.2 CURRENT
  • 【随机文章】
  • 用ACDSee一网打尽重复图片
  • CowNew开源-抛不了异常,我该怎么办
  • 服务部门的知识管理
  • 捷通移动办公方案:政府也能“移动”
  • ADO如何使用Update语法
  • 文件管理框架 - 对文件的认识
  • linux上用户、用户组及私有用户组
  • 传奇 道士PK技巧
  • 了解 LILO 和 GRUB
  • Word2000第一讲 显示“网格线”
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.