Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不确定为什么创建QVector会导致Qt中的分段错误_C++_Qt_Vector_Parameter Passing_Pass By Reference - Fatal编程技术网

C++ 不确定为什么创建QVector会导致Qt中的分段错误

C++ 不确定为什么创建QVector会导致Qt中的分段错误,c++,qt,vector,parameter-passing,pass-by-reference,C++,Qt,Vector,Parameter Passing,Pass By Reference,我想弄明白为什么这个QVector给了我一个分割错误 为了给我的程序提供一点背景信息,我在主窗口出现之前弹出了两个对话框。这两个对话框存储了基本信息:有多少玩家,他们的名字,以及他们想要什么。我创建了一个QVector来存储每个播放器小部件,每个播放器在主窗口中都有一个空间分配给它们。当我尝试将从对话框中接收到的信息添加到QVector for GUI播放器时,会产生分段错误 以下是发生分段错误的函数: void MainWindow::setPlayerData(int _index, con

我想弄明白为什么这个QVector给了我一个分割错误

为了给我的程序提供一点背景信息,我在主窗口出现之前弹出了两个对话框。这两个对话框存储了基本信息:有多少玩家,他们的名字,以及他们想要什么。我创建了一个QVector来存储每个播放器小部件,每个播放器在主窗口中都有一个空间分配给它们。当我尝试将从对话框中接收到的信息添加到QVector for GUI播放器时,会产生分段错误

以下是发生分段错误的函数:

void MainWindow::setPlayerData(int _index, const QString &_name, int i)
{
    index.append(_index); // this is the index number that correlates to the piece they selected
    name.append(_name); // this is the name the player typed in
    players.append( new Player(name[i], index[i]) ); //create a player class based off of that information
    guiPlayers.append( new GUIPlayerVertical( players[i]) ); // <<< segfaulting on this line. 
}
我试图通过在GUIplayers构造函数中放置cout语句来调试我的程序,但是没有打印出来

我的guiplayervential类看起来像这样它只是一个构造函数:

#include "guiplayervertical.h"
GUIPlayerVertical::GUIPlayerVertical( Player* p ) : GUIPlayer( p )
{
    setFixedSize(QSize(300, 300));
    setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    setFeatures(DockWidgetFeatures(NoDockWidgetFeatures));
}

如果你们都需要任何更多的信息来帮助我调试,请让我知道,我非常感谢你们能提供的任何帮助。谢谢。

如果您在Linux上运行,valgrind可能会给您一些提示。首先使用-g编译。再次使用Hi。inti作为参数没有意义,并且容易出错。如果您试图访问刚刚创建的播放器,为什么不使用:players.append new player\u name,\u index;和guiPlayers.append新的guiplayervential players.back;我刚试过,但不幸的是,它仍然让我感到困惑。我确信我传递的玩家对象是存在的。还有什么其他原因?>但是如果您只有guiPlayers.append new guiPlayers.back;,它会起作用?如果你解决了这个问题,请写一个答案来解释问题所在,也可以编辑这个问题以包含任何额外的信息,这样答案才有意义。或者只是删除问题,因为没有答案,如果你最近没有删除很多东西,太多的删除可能会引发惩罚。
#include "guiplayervertical.h"
GUIPlayerVertical::GUIPlayerVertical( Player* p ) : GUIPlayer( p )
{
    setFixedSize(QSize(300, 300));
    setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    setFeatures(DockWidgetFeatures(NoDockWidgetFeatures));
}