我需要确保传递给构造函数的某个指针不是NULL。通常我只在函数的开头放一个Q_ASSERT(),如下所示:
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的正确方式是什么呢?
发布于 2013-06-15 01:12:20
在构造函数中使用Q_ASSERT是可以的。没有理由不是这样的。它只是将一条消息打印到输出。
发布于 2014-04-30 02:57:50
这真的取决于如何以及在哪里使用你的代码。您说得对,构造函数是一个特殊的函数,最佳实践是
使用
嗯,如果它在一个构造函数中,那么这个特定对象的状态并不清楚已经做了什么,需要清理什么之类的。所以归根结底,这是你的决定,看看这在你的情况下是否是一个问题。
https://stackoverflow.com/questions/17113711
复制相似问题