c++ - 在构造函数中使用 Q_ASSERT

标签 c++ qt constructor qt4 assert

我需要确保传递给我的构造函数的某个指针不是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 的正确方法是什么,最好是在构造时?

最佳答案

在构造函数中使用Q_ASSERT 是可以的。没有理由不是。它只是向输出打印一条消息。

关于c++ - 在构造函数中使用 Q_ASSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113711/

相关文章:

c++ - opencv c++ 中的鼠标事件

c++ - QMessageLogContext 的字段(如 : file, 函数、行)为空或为零

c++ - 使用连接的套接字终止 QWebSocketServer

c++ - 类成员可以用初始化列表中的另一个类成员来初始化吗?

c++ - 如何在 Qt 5.1.0 中将主窗口对齐到屏幕的右侧

c++ - OutputIterator 到底是什么以及如何构建一个用于 CGAL Kd_tree::search 的?

c++ - Qt:检测鼠标是否位于某个小部件上,即使该小部件没有焦点

windows - 名为 Boxes 的 Qt 示例可在 Ubuntu 上运行,但不能在 Windows 上运行 (Qt 5.0.2)

javascript - 如何在其内部引用 Backbone/Marionette View ?

C++11 传递 'this' 作为 std::make_shared 的参数