这是我的代码,我在
Plot.hpp
:
class Plot
{
private:
std::string name;
QApplication* app;
QMainWindow* window;
QCustomPlot* plotWidget;
public:
Plot(std::string& name);
void showPlot();
};
在我的心里
Plot.cpp
我有以下文件:
Plot::Plot(std::string& name) : name(name)
{
char *gui_argv[] = {(char*)(name.c_str()), NULL};
int gui_argc = sizeof(gui_argv) / sizeof(char*) - 1;
app = new QApplication(gui_argc, gui_argv);
window = new QMainWindow();
plotWidget = new QCustomPlot(window);
window->setCentralWidget(plotWidget);
plotWidget->plotLayout()->clear();
}
void Plot::showPlot()
{
window->show();
app->exec();
}
main.cpp
:
int main()
{
std::string title = "Testing";
Util::Plot *plotWindow = new Util::Plot(title);
plotWindow->showPlot();
return 0;
}
通过GDB我得到了这个堆栈跟踪,但是我不能真正地破译它来找出错误是什么。它深入到QT的内部:
window
,
app
plotWidget
不为空。所以基本上,只是创建
QMainWindow
而试图在不采取任何其他行动的情况下展示它会导致这种失败。这里可能有什么问题?我错过了什么?
额外费用:
我不认为以下是问题的原因。但以防万一:
我没有使用QT-Studio,我已经编写了自己的makefile来构建
libQCustomPlot.so
以及我自己的应用程序,并将它们链接到必要的QT库。编译过程中没有失败或警告。
编辑1:
我忘了贴原来的错误!只是以下内容,没有其他信息/说明:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)