Qt 类中的指针问题
我有两个类:board.h和scene.h。当我像这样运行程序时,一切正常: scene.cppQt 类中的指针问题,qt,class,pointers,Qt,Class,Pointers,我有两个类:board.h和scene.h。当我像这样运行程序时,一切正常: scene.cpp scene::scene() { basescene=new QGraphicsScene; additem(); } void scene::additem() { board *_board=new board; QPixmap boarditem (":/images/board.png"); _board->setPixmap(boarditem);
scene::scene()
{
basescene=new QGraphicsScene;
additem();
}
void scene::additem()
{
board *_board=new board;
QPixmap boarditem (":/images/board.png");
_board->setPixmap(boarditem);
basescene->addItem(_board);
}
场景h
class scene:public QGraphicsScene
{
public:
scene();
QGraphicsScene *basescene;
void additem();
};
class scene:public QGraphicsScene
{
public:
scene();
QGraphicsScene *basescene;
};
董事会
class board:public QGraphicsPixmapItem
{
public:
board();
};
class board:public QGraphicsPixmapItem,public scene
{
public:
board();
void additem();
board *_board;
};
board.cpp
board::board()
{
}
但当我这样运行它时:
场景h
class scene:public QGraphicsScene
{
public:
scene();
QGraphicsScene *basescene;
void additem();
};
class scene:public QGraphicsScene
{
public:
scene();
QGraphicsScene *basescene;
};
scene.cpp
scene::scene()
{
basescene=new QGraphicsScene;
additem();
}
void scene::additem()
{
board *_board=new board;
QPixmap boarditem (":/images/board.png");
_board->setPixmap(boarditem);
basescene->addItem(_board);
}
scene::scene()
{
basescene=new QGraphicsScene;
board _board;
}
董事会
class board:public QGraphicsPixmapItem
{
public:
board();
};
class board:public QGraphicsPixmapItem,public scene
{
public:
board();
void additem();
board *_board;
};
board.cpp
board::board()
{
additem();
}
void board::additem()
{
board *_board=new board;
QPixmap boarditem (":/images/board.png");
_board->setPixmap(boarditem);
basescene->addItem(_board);
}
程序崩溃,调试器说错误在场景类中,代码有一个段错误。我在谷歌上搜索,它说是指针问题。。。我是C++新手,调试程序,对我的英语不好感到抱歉。 < p>你继承了<代码>板> <代码> > <代码>场景<代码>。 创建
board
实例时,执行场景
构造函数,然后执行board
构造函数。
但是在场景中
构造函数中,您创建了board的一个新实例。而这个新实例的scene
构造函数会创建另一个board实例。依此类推,直到无穷远
如果您需要有关构造函数调用的更多信息:编辑: 事实上,如果它已经克服了这个问题,并且走得更远,它将到达
board
构造函数,该构造函数调用addItem
,从而创建另一个board
实例。在这个新实例的构造函数中,将再次调用addItem
,它将一次又一次地尝试创建另一个board
因此,您有两个递归构造函数调用。代码中有一团乱麻。您可以完全删除工作正常的代码,但放入失败的完整代码。例如,
chessscene
的构造函数在哪里?我编辑了这篇文章,这不是问题所在。。。我真的很累了…没有在帖子中看到这个问题,对此我很抱歉。