【发布时间】:2012-01-08 22:19:13
【问题描述】:
当我关闭我的应用程序并且为这个类运行析构函数时,我对一个段错误感到沮丧。
vlocationdropdowns.h:
#include <QWidget>
class VLocationDropDowns : public QWidget
{
Q_OBJECT
public:
VLocationDropDowns(QString activeText, QWidget *parent = 0);
~VLocationDropDowns();
};
vlocationdropdowns.cpp:
VLocationDropDowns::VLocationDropDowns(QString activeText, QWidget *parent) :
QWidget()//I've also had this as QWidget(parent, Qt::Widget)
{
}
VLocationDropDowns::~VLocationDropDowns()
{
}
我在另一个类的构造函数中创建了这个类的一个对象(locationLineEdit是一个指针)(也许我应该说这个类也继承自QWidget):
locationDropDowns = new VLocationDropDowns(randomString, this);
但是当该类的析构函数运行delete locationDropDowns; 时,我得到一个段错误。
我是管理内存的新手,所以我意识到这可能是一个菜鸟问题,但我现在已经搞砸了。我已经注释掉了我可以加入的所有内容 vlocationdropdowns.cpp 它仍然是段错误所以我现在不知道。这可能是什么原因造成的?
【问题讨论】:
-
宏Q_OBJECT是什么?
-
这是一个 Qt 宏。我认为它完成了所有信号和插槽的工作——老实说我不太确定,但我知道 Qt 需要它。我没有将此问题标记为 Qt,因为我认为 Qt 与它没有任何关系——我可能是错的。
-
您使用的是
new VLocationLineEdit,但您向我们展示了来自VLocationDropDowns的一些代码。你不是要给我们看VLocationLineEdit吗? -
Ja,抱歉,已修复 - 只是复制了错误的代码行...
-
为什么不通过调试器运行?
标签: c++ qt constructor segmentation-fault