这段代码在做什么?
SNMP_Sequence trapseq = trap.GetPDU().GetVarBindList();
据我所知,一个对象一次只能引用一个成员函数。
这里发生了什么?
trap.GetPDU().GetVarBindList()
答案 0 :(得分:4)
trap.GetPDU()
返回一个对象,并在该对象上调用GetVarBindList()
。
trap.GetPDU().GetVarBindList()
相当于:
obj.GetVarBindList()
其中obj
是trap.GetPDU()
这也称为 Method Chaining 。
答案 1 :(得分:0)
它正在检索GetPDU
返回的对象(或引用),然后在其上调用GetVarBindList
。
等同于:
SomeObject &PDU = trap.GetPDU();
SNMP_Sequence trapseq = PDU.GetVarBindList();
答案 2 :(得分:0)
在任何表达式的结果上调用成员函数是完全合法的,包括访问另一个成员,如果该表达式具有适当的类型。
std::vector<std::vector<std::vector<std::string>>> super_jaggy;
// insert stuff here
std::cout << super_jaggy.front().front().front().size(); // legal