2009年2月18日星期三

创建Nebula3对象

从Core::RefCounted继承下来的Nebula3对象可以通过3中不同的方式创建:

1.直接使用静态创建方法:

Ptr< myObj> = MyClass::Create();

静态Create()方法是在声明的前面通过DeclareClass()宏添加到类中的。这是C++ operator::new()的语法糖衣。实际上,Create()方法内部除了调用new操作以外什么也没有。另外,正确使用智能指针持有新对象。

2.另外一种方式是使用类名创建对象:

using namespace Core;

Ptr< myObj> = (MyClass*) Factory::Instance()->Create("MyNamespace::MyClass");

如果你在编译时不知道对象类,通过它的字符串类名创建一个对象是很有用的。这种方式常常用于恢复序列化对象,或者使用某种脚本接口。注意类型转换,因为Create()方法返回一个通用的指向Core::RefCounted对象的指针。

3.通过类的fourcc类标识符创建对象:

using namespace Core;
using namespace Util;
Ptr<> = (MyClass*) Factory::Instance()->Create(FourCC('MYCL'));

这种方式看起来比较不直观,但它创建对象的速度比使用类名快,并且fourcc类标识符(4bytes)比字符串类名占用更少的空间。当一个对象被编码/解码到二进制流的时候这种方式创建对象方式有很多的优点。

原文:<<The Nebula Device 3 Document>>Creating Nebula3 Objects

[声明]:限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;

没有评论:

发表评论