tommy

It's hard to tell the world we live in is either a reality or a dream
posts - 52, comments - 17, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
下面的代码,所谓 "Template Template 参数",在 VC6 下面编译是会报告“template can't be nested”的,幸好, VC7是能成功编译的,否则这本《C++设计新思维》就很难看下去了,

template <class T>
struct OpNewCreator
{
    
static T* Create()
    
{
        
return new T;
    }

}
;
template 
<class T>
struct MallocCreator
{
    
static T* Create()
    
{
        
void * buf = std::malloc(sizeof(T));
        
if (! buf ) return 0;
        
return new(buf) T;
    }

}
;
template 
<class T>
struct PrototypeCreator
{
    PrototypeCreator(T
* pObj = 0) : pPrototype_(pObj)
    
{}
    T 
* Create()
    
{
        
return pPrototype_ ? pPrototype_->Clone() : 0;
    }

    T
* GetPrototype() return pPrototype_; }
    
void SetPrototype(T * pObj) { pPrototype_ = pObj; }
private:
    T
* pPrototype_;
}
;


class Widget
{
}
;


template 
<template <class Created> class CreationPolicy>
class WidgetManager : public CreationPolicy<Widget>
{
    
//
}
;



int _tmain(int argc, _TCHAR* argv[])
{
    typedef WidgetManager
< OpNewCreator >  myWidgetMgr;

    
return 0;
}

Feedback

# re: 读书笔记《C++设计新思维》(1) Template Template 参数  回复  更多评论   

2006-12-14 18:08 by huangshan
好,我现在也在看这本书,但是我觉得很困难。
请问我需要先看些什么书?
c/c++ 语法我应该是很熟悉了
templates 的前9章也看完了(理解不是很深刻,有需要随时复习)

我想问问,我还需要些什么知识才能比较好的看这本书

# re: 读书笔记《C++设计新思维》(1) Template Template 参数  回复  更多评论   

2006-12-14 18:10 by huangshan
我上网计较困难,
你能直接给我回信吗?
huangshan_china@163.com

谢谢

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理