该类位于 src/core/model/object-base 文件中 。
在该文件的开始部分,有如下的宏定义:
#define NS_OBJECT_ENSURE_REGISTERED(type) \
static struct X ## type ## RegistrationClass \
{ \
X ## type ## RegistrationClass () { \
ns3::TypeId tid = type::GetTypeId (); \
tid.GetParent (); \
} \
} x_ ## type ## RegistrationVariable
该宏定义的作用是在NS3 factory中注册 新定义的类型。即如果你定义了一个类型,并定义了一个新的GetTypeId方法,则需要在你的类文件开头引用这个宏。
我们知道,在NS3中,对象的属性是存放在它的TypeId类中的。而ObjectBase则提供了一种机制,来将对象的实例和对象的TypeId类联系起来。
1. 首先来看看与TypeId相关的函数:
static TypeId
GetObjectIid (void)
{
NS_LOG_FUNCTION_NOARGS ();
TypeId tid = TypeId ("ns3::ObjectBase");
tid.SetParent (tid);