访问成员变量给出了SIGSEGV

时间:2017-07-16 06:52:09

标签: c++ sigsegv irrlicht

我试图在C ++中使用库Irrlicht创建一个GUI,但是在拧我的Gui Handler时,我在尝试访问构造函数之外的任何数据时遇到了SIGSEGV错误。

我的标题如下:

#pragma once
#include <irrlicht.h>
#include "Structs.h"
#include <vector>
#include <string>
class GuiHandler
{
public:
    GuiHandler(Structs::SAppContext *contIN);
    ~GuiHandler();

    bool GuiEvent(const irr::SEvent& eventType);
    struct RGBPicker
    {
        IGUIButton* sample;
        IGUIStaticText* RGB[3];
        IGUIEditBox* RGBValues[3];
        int Colour[3];
    };
    RGBPicker bottomColour;
    RGBPicker topColour;
    int i;
}

将值分配给cpp文件中构造函数中的2个RGBPicker变量:

GuiHandler::GuiHandler(Structs::SAppContext *contIN)
{
    context = contIN;

    int xpos = 185;
    int ypos= 110;
    //bottomColour.pickerTexture->fill(s)
    bottomColour.sample = context->env->addButton(rect<s32>(128+xpos, 16+ypos, 198+xpos, 86+ypos), 0, 111, L"");
    bottomColour.sample->setEnabled(false); //static box
    bottomColour.RGBValues[0] = context->env->addEditBox(L"", rect<s32>(64+xpos, 64+ypos, 120+xpos, 84+ypos), true, 0, 113);
    bottomColour.RGBValues[1] = context->env->addEditBox(L"", rect<s32>(64+xpos, 40+ypos, 120+xpos, 60+ypos), true, 0, 113);
    bottomColour.RGBValues[2] = context->env->addEditBox(L"", rect<s32>(64+xpos, 16+ypos, 120+xpos, 36+ypos), true, 0, 113);
    for(int i = 0; i < 3; i++)
    {
        bottomColour.RGBValues[i]->setMax(3);
        bottomColour.RGBValues[i]->setText(L"0");
    }
    bottomColour.RGBValues[0]->setToolTipText(L"B1");
    bottomColour.RGBValues[1]->setToolTipText(L"G1");
    bottomColour.RGBValues[2]->setToolTipText(L"R1");

    bottomColour.RGB[0] = context->env->addStaticText(L"B:", rect<s32>(48+xpos, 64+ypos, 66+xpos, 84+ypos), false, false, 0, -1,114);
    bottomColour.RGB[1] = context->env->addStaticText(L"G:", rect<s32>(48+xpos, 40+ypos, 66+xpos, 60+ypos), false, false, 0, -1,114);
    bottomColour.RGB[2] = context->env->addStaticText(L"R:", rect<s32>(48+xpos, 16+ypos, 66+xpos, 36+ypos), false, false, 0, -1,114);


    std::cout<<i<<std::endl;
    i=2;
    std::cout<<i<<std::endl;

}

虽然一切都在标题内 - 访问所有topColour,bottomColour和context语句,但在类中的任何其他方法中,它们都会产生SIGSEGV。甚至用cout打印出我。 我知道我必须做得非常简单,但是我无法解决这个问题。

感谢。

0 个答案:

没有答案