このコードは何をしていますか?C++の2つの関数にアクセスする単一のオブジェクト
SNMP_Sequence trapseq = trap.GetPDU().GetVarBindList();
は、私の知る限りでは、オブジェクトは、一度に1つだけのメンバ関数を参照することができます。 ここに何が起こっていますか? trap.GetPDU().GetVarBindList()
このコードは何をしていますか?C++の2つの関数にアクセスする単一のオブジェクト
SNMP_Sequence trapseq = trap.GetPDU().GetVarBindList();
は、私の知る限りでは、オブジェクトは、一度に1つだけのメンバ関数を参照することができます。 ここに何が起こっていますか? trap.GetPDU().GetVarBindList()
trap.GetPDU()
はオブジェクトを返し、そのオブジェクトに対してGetVarBindList()
が呼び出されます。
trap.GetPDU().GetVarBindList()
は、と等価である:obj
これはまたMethod Chainingとして知られているtrap.GetPDU()
によって返されたオブジェクトである
obj.GetVarBindList()
。
GetPDU
が返すオブジェクト(または参照)を取得してから、GetVarBindList
を呼び出しています。
SomeObject &PDU = trap.GetPDU();
SNMP_Sequence trapseq = PDU.GetVarBindList();
必ずしも、 'GetPDU'がrvalueまたはconst参照であるとは限りません。 – Puppy
別のメンバーへのアクセスを含め、任意の式の結果にメンバ関数を呼び出すことは完全に合法的である、という表現が適切なタイプでなければなりません:のようなものと同等
。
std::vector<std::vector<std::vector<std::string>>> super_jaggy;
// insert stuff here
std::cout << super_jaggy.front().front().front().size(); // legal
'trap.GetPDU()'はオブジェクトまたは参照を返す可能性があります。メソッドGetVarBindList()を呼び出すためにさらに使用されます。 –