【发布时间】:2012-01-27 02:00:53
【问题描述】:
当我关闭框架时,我的程序不断崩溃。我已将原因缩小到两行有问题的代码,但我不确定它们为什么会崩溃。这是我的一些代码:
俄罗斯方块框架.cpp
TetrisFrame::TetrisFrame()
: wxFrame(0, wxID_ANY, "Tetris")
{
statusController_ = new StatusController;
statusController_->setModel(new Statuses);
statusController_->addView(this);
tetrisController_ = new TetrisController;
tetrisController_->setStatusController(statusController_.get()); // Problem one
tetrisController_->setModel(new TetrisModel);
tetrisController_->addView(new Board(this)); // Problem two
}
TetrisFrame 类私有成员变量:
wxSharedPtr<StatusController> statusController_;
wxSharedPtr<TetrisController> tetrisController_;
StatusController 类私有部分:
typedef wxSharedPtr<TetrisFrame> ViewPtr;
wxSharedPtr<Statuses> model_;
std::vector<ViewPtr> views_;
Board类私有成员变量:
wxSharedPtr<TetrisController> controller_;
相关俄罗斯方块控制器功能:
void TetrisController::setStatusController(
StatusController* statusControllerPtr)
{
statusController_ = statusControllerPtr;
}
void TetrisController::addView(Board* viewPtr)
{
views_.push_back(ViewPtr(viewPtr));
viewPtr->setControlller(this);
}
奇怪的是,在我修复了另一个导致程序崩溃的问题之前,问题二并没有导致程序崩溃。我的代码有什么问题?
【问题讨论】:
-
您的问题似乎与内存访问有关——您是否尝试在其上运行
valgrind?