無効なポインターまたはスマートポインターが逆参照されると、コードがクラッシュします。問題を見つけるのに役立つアサートが追加されます。例えば、
Type* p = NULL; // Always initilize to be null.
assert(p); // Add before dereferencing to help to find the problem.
p->f(); // Crashes if p is invalid.
私の質問は、ポインターを逆参照するときにアサーションを自動的に追加する方法です。例えば、
#define PTR_RUN(p, f) assert(p); p->f;
これは機能しますが、読みやすくはなく、マクロの不注意な使用による隠れた問題が発生する可能性があります。より良い方法はありますか?ありがとう。