古いコード ベースで発見したものを見ていますが、かなり混乱しています。
関数定義は次のとおりです。
void vUpdateSequenceDetailsAndIncrement(
const CallEvent& roCPEvent,
const CallInfo& roCallInfo,
BOOL bCreationEvent);
ここでは、次のように呼ばれています。
vUpdateSequenceDetailsAndIncrement(roCPEvent, NULL, FALSE);
ここでは、 NULLが参照パラメータに直接渡されていますroCallInfo
。この関数は最終的に以下を呼び出します。
vTimeChange(*pSeqDetails, roCPEvent, roCallInfo);
これは次のように定義されています。
void vTimeChange(const SequenceDetails& roSequenceDetails,
const CallEvent& roCPEvent,
const CallInfo& roCallInfo)
再度、NULL の可能性がある値を に渡しますroCallInfo
。参照として NULL を渡せないと思っていたのですが?VC++ 4.x に何らかの問題があり、この種のコードを問題なく使用できるかどうかを知っている人はいますか? NULL を参照として渡すことができる場合、vTimeChange で次のようなことが起こるとどうなりますか。
roCallInfo.getCallStartTime();
それは私がやったのと同じように NULL の逆参照ではありませんか
CallInfo * info = NULL;
info->getCallStartTime();
? とにかくそこにガードを置き、不要であればコンパイラーにそれを削除させますが、これがどのように起こっているのかを知りたいです!
ありがとう。