转自:http://www.cppblog.com/sandy/archive/2005/11/30/1436.html

;
Root g_root;//must declare once only

//使用
//Test.Cpp
Root::getSingleton().Use();

很简单,使用的技巧是template base class
这种实现方法的好处是复用性好。

【分析:class Root:public Singleton<Root>之后,可以这样看Root,这个Root本质其实就是包含了

template <typename T> class Singleton
{...}

中的{...}大括号中的所有代码,别的什么也不是,不用考虑太复杂了,在此基础上就好理解了。


不过使用者要声明Root * Singleton<Root>::ms_Singleton =0;挺讨厌的

改进方法:template static member function
也就是改变声明一个static T*在template class,换成使用静态成员函数取出instance

;  }
static T& getSingleton( void )
        {  assert( ms_Singleton() );  return ( *ms_Singleton() );  }
static T* getSingletonPtr( void )
        {  return ( ms_Singleton() );  }
};

Ogre的Singleton实现-模版实现,便于重用-(详细分析)以及笔者的改进的更多相关文章

  1. js模版引擎开发实战以及对eval函数的改进

    简介 前段时间,想着自己写一个简单的模版引擎,便于自己平时开发demo时使用,同时也算是之前学习的知识的一种总结吧! 首先我们先了解一下模版引擎的工作原理吧! 1. 模版引擎其实就是将指定标签的内容根 ...

  2. Django模版中的过滤器详细解析 Django filter大全

    就象本章前面提到的一样,模板过滤器是在变量被显示前修改它的值的一个简单方法. 过滤器看起来是这样的: {{ name|lower }} 显示的内容是变量 {{ name }} 被过滤器 lower 处 ...

  3. 2. Singleton模式

    这两种方法都提到了使用模版: (1) 参考文章:http://www.cnblogs.com/08shiyan/archive/2012/03/16/2399617.html 不同: a. 该方法直接 ...

  4. 6.-Django设计模式及模版层

    一.MVC (java等其他语言) MVC代表Model-view-Contorller(模型-视图-控制器)模式 M模型层主要用于对数据库层的封装 V视图层用于向用户展示结果 C控制器用于处理请求. ...

  5. 开发便于运维的Windows服务

    过去几个月,DevOps on Windows网站推出了一系列文章,详细讲解了开发者应怎样创建便于运维的Windows服务.这一系列文章详细分析了如何克服在运维部门看来最困难的部分:Windows服务 ...

  6. IOS Table中Cell的重用reuse机制分析

    IOS Table中Cell的重用reuse机制分析 技术交流新QQ群:414971585 创建UITableViewController子类的实例后,IDE生成的代码中有如下段落: - (UITab ...

  7. Ogre 1.8 terrain 和 paging 组件

    以下转自:http://hi.baidu.com/xocoder/item/e8d87cf53d87612b753c4cfd OGRE地形生成 OGRE可以通过两个接口来生成地形,分别是void Te ...

  8. UITableViewCell的重用机制原理

    UITableViewCell的重用机制原理 来自http://blog.csdn.net/omegayy/article/details/7356823 ====================== ...

  9. IOS中UITableViewCell的重用机制原理

    创建UITableViewController子类的实例后,IDE生成的代码中有如下段落: - (UITableViewCell *)tableView:(UITableView *)tableVie ...

随机推荐

  1. Google 商店

    Google 商店地址:https://store.google.com/

  2. LinkedList add remove get 代码分析

    add void linkLast(E e) { //e 要添加的元素 final Node<E> l = last; // 最后一个元素 final Node<E> newN ...

  3. RealProxy AOP过滤方法的参数

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  4. 【cogs182】【USACO Jan07】均衡队形【st表】

    题目描写叙述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按相同的顺序站好. 一日.农夫约翰决定为奶牛们举行一个"终极飞盘"比赛.为简化问题.他将从奶牛 ...

  5. Harbor配置ldap

    1.修改配置Harborp配置文件,共修改三处 1.1 auth_mode = ldap_auth 1.2 ldap_url = ldap://10.10.20.202 1.3 ldap_basedn ...

  6. java栈的最大深度?

    1. 概述 某公司面试,总监大叔过来,问了图论及栈的最大深度,然后^_^ 一直记着,今天搞一下 2. 代码 package com.goodfan.test; public class JavaSta ...

  7. 8148 8168 中移植live55 出现except rtsp 中途莫名的断流

    在解码中,接了浙江宇视的ipc相机,解码一般就挂了,vlc 也是中途断流.费解? vlc异常信息如下: packetizer_h264 warning: waiting for SPS/PPS pac ...

  8. chattr

    chattr 功能:设置文件隐藏属性常用参数:+    增加某个特殊权限,其他原本存在的参数不动-     删除某个特殊权限,其他原本存在的参数不动=    设置一定,且仅有后面接的参数 i   文件 ...

  9. HDU 5901 Count primes (2016 acm 沈阳网络赛)

    原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5901 题意:输入n,输出n以内质数个数 模板题,模板我看不懂,只是存代码用. 官方题解链接:https ...

  10. 关于IIS上Yii2的Url路由美化

    Yii2默认的路由是酱紫的 http://.../admin/web/index.php?r=site/login 心中理想的美化Url应该这样  http://.../admin/web/site/ ...