C ++枚举EXC_BAD_ACCESS

时间:2011-08-20 21:07:18

标签: c++ enums

我对c ++中的枚举有问题 我不明白为什么如果我使用相同的枚举定义两个变量,它给EXC_BAD_ACCESS 你知道为什么吗?如果我只定义一个变量就可以了 这是代码......

enum directions{
    UP,
    DOWN,
    RIGHT,
    LEFT,
    IN,
    OUT,
    FW,
    RW
};

class Snake
{
private:
    enum directions head_dir;
    enum directions head_dir_ask; //if I comment this... the program work fine..
    (... other stuff...)
};

感谢您提前的帮助 代码大约有10个文件......发帖时间太长了 反正...
我正在使用OpenGL和Qt

MainProject::MainProject(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainProject)
{
    ui->setupUi(this);
    startTimer(1000);
    glwidget = new MyGLBox(ui->centralWidget);
    ui->GLlayout->addWidget(glwidget); // <line where the complier retruns the EXC_BAD_ACCESS
}

MyGLBox构造函数:

MyGLBox::MyGLBox(QWidget *parent):QGLWidget(parent){
   XRot = YRot = ZRot = 0;
    theta1 = theta2 = phi = 0;
}

1 个答案:

答案 0 :(得分:0)

您的问题中没有足够的信息可以指出您的任何特定方向。但是,几乎可以肯定的是,因为代码中的某个 else ,有一些指针操作变得疯狂并最终访问未定义的内容。更改对象的内存布局(例如添加或删除未使用的成员)可以暂时屏蔽此类错误 - 这不是一件好事,因为如果阻止错误,它只是将其转换为高度可见和可调试的崩溃事件更微妙,更难以检测,但仍然是一个错误,其最终影响可能更令人困惑。

您应该在调试器中运行代码,并在获得异常时检查它正在执行的操作。 (并且为了您自己,以任何方式更改程序,使崩溃消失,直到您理解为什么它崩溃并且确定您已经修复了根本原因)。