Node对象声明为
class Node : public Object
{
public:
static TypeId GetTypeId (void);
它的定义是
TypeId
Node::GetTypeId (void)
{
static TypeId tid = TypeId ("ns3::Node")
.SetParent<Object> ()
.SetGroupName ("Network")
.AddConstructor<Node> ()
.AddAttribute ("DeviceList",
"The list of devices associated to this Node.",
ObjectVectorValue (),
MakeObjectVectorAccessor (&Node::m_devices),
MakeObjectVectorChecker<NetDevice> ())
.AddAttribute ("ApplicationList",
"The list of applications associated to this Node.",
ObjectVectorValue (),
MakeObjectVectorAccessor (&Node::m_applications),
MakeObjectVectorChecker<Application> ())
.AddAttribute ("Id",
"The id (unique integer) of this Node.",
TypeId::ATTR_GET, // allow only getting it.
UintegerValue (0),
MakeUintegerAccessor (&Node::m_id),
MakeUintegerChecker<uint32_t> ())
;
return tid;
}
我的问题是这样的:
static TypeId tid = TypeId ("ns3::Node")
.SetParent<Object> ()
一旦声明了
tid
是什么,就没有行;
符号的结尾,接下来的几行以点.
运算符开头。 .SetParent<Object> ()
.SetGroupName ("Network")
.AddConstructor<Node> ()
在开始使用NS3之前,我对OOP进行了基础研究,但是之前没有遇到过这种语法。
是声明类
Node
的方法/属性的另一种方法吗? 最佳答案
空格(包括换行符)在C ++中没有意义。TypeId ("ns3::Node")
创建一个临时对象。 .SetParent<Object> ()
是在对象上调用的方法。显然,它返回对该对象的引用,在该对象上调用.SetGroupName()
,依此类推。
每个方法都在临时对象上设置一些属性。完全配置后,将用于初始化static TypeId tid
。
关于c++ - 在NS3中遇到了以下代码行。需要帮助了解它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57898744/