I have create a article about this topic, but the all lettles pile
together, so I rewrite it again.
I create a polymorphic product creator which allows you to create objects using its name as a template argument, return
a pointer to the object with its base class type.
Here is the implementation:
template
struct AbstractCreator
{
virtual AbstractCreator* operator()(){throw();return 0;}
};
Because we don't want to create a object which is
base typed that unsually is a abstruct class, we have to
prevent the creator from calling the function
AbstractCreator::operator()().But we can not make it a pure
function, the reason for which I will point out in the next article .
template class CreatePolicy = Loki::CreateUsingNew
>
struct ProductCreator:
public AbstructCreator
{
AbstructCreator* operator()()
{ return CreatePolicy::Create();}
};
The code is so few but not so easy to understand.
Let's have a view about how the creator works:
We assum that class GTank and GBullet are derived
from class GObject,then we can create codes like this:
GObject* pO1 = ProductCreator()();
GObject* pO2 = ProductCreator()();
Why we need a ProductCreator?
There are two reasons.
重发试试:A Polymorphic Product Creator.
最新推荐文章于 2025-04-01 00:00:00 发布
本文介绍了多态产品创建器的实现,它允许使用名称作为模板参数创建对象,并返回基类类型的对象指针。给出了相关代码实现,还提到要防止调用特定函数,最后探讨了创建器的工作原理以及使用它的两个原因。
353

被折叠的 条评论
为什么被折叠?



