コンストラクターに渡される特定のポインターが ではないことを確認する必要がありNULL
ます。通常Q_ASSERT()
、次のように関数の先頭に a を置きます。
void Class::doStuff( Object *object )
{
Q_ASSERT( object );
// do stuff
}
しかし、コンストラクターは特別な関数であるため、これと同じ手法が適切かどうかを知りたいです。このようなコンストラクタで Q_ASSERT を使用すると何か問題がありますか?
Class::Class( Object *object, QObject *parent = NULL )
:
QObject( parent ),
_object( object )
{
// make sure that object is not NULL
Q_ASSERT( object );
// do stuff that will dereference the pointer, hence it must not be NULL
if( object->hasSomething() )
// do stuff
}
これが悪い習慣である場合NULL
、理想的には建設時にチェックする正しい方法は何ですか?