C++ C+中的读取访问冲突+;

C++ C+中的读取访问冲突+;,c++,access-violation,C++,Access Violation,这是我的错误。我试图在我提供的代码和我不提供的代码中使它更有条理。 一般来说,我写的是一个C++的OpenGL应用程序,可以测试,如果两个数字用火柴匹配的话就可以了。我通过测试类进行交互,这是我在OpenGL界面上创建图形界面的唯一方法。重要信息:以下是几行代码: Figure图1=Figure(); 图2=图(); 图*已选定; 我有两个地物对象和一个指针。我可以在ImGui覆盖中选择1或2,这将依次将所选指针设置为fig1或fig2。然后,我对鼠标事件进行测试,如果单击鼠标,我可以计算单击

这是我的错误。我试图在我提供的代码和我不提供的代码中使它更有条理。 一般来说,我写的是一个C++的OpenGL应用程序,可以测试,如果两个数字用火柴匹配的话就可以了。我通过测试类进行交互,这是我在OpenGL界面上创建图形界面的唯一方法。重要信息:以下是几行代码:

Figure图1=Figure();
图2=图();
图*已选定;
我有两个地物对象和一个指针。我可以在ImGui覆盖中选择1或2,这将依次将所选指针设置为
fig1
fig2
。然后,我对鼠标事件进行测试,如果单击鼠标,我可以计算单击点的
x
y
位置。那很好用

然后,我想在我的地物中添加一个新的line对象。我的地物保存为
std::vector
中的一组线条。作为参考,我将在最后添加我的整个数字标题。现在,我在按下鼠标时调用这两个函数:

selected->SetWorking(posX、posY、m_-Select);//
//->HIER STECKT NH
if(m_Select)//FEHLER
选中->添加行();
据我所知,我现在调用所选指针指向的对象上的两个函数。我将只显示调用
SetWorking()
后发生的情况,这是异常最初引发的地方。如果我排除这两个方法调用,那么程序运行得很好。如果执行了其中一个或两个,则会抛出此错误

void Figure::SetWorking(整数x、整数y、布尔段)
{
如果(段)
{
p1=点(x,y);
}
p2=点(x,y);
}
这是我实现的功能。对于这个问题来说,这个部分并不重要。线段选择是编辑直线的第一个点,还是编辑第二个点。它只是交替:如果单击一次,第一个点将被编辑。然后,在第二次单击后,将编辑第二次。选择正确的点后,我尝试构建一对计算的
x
y
坐标,构建这对坐标时,会引发异常:

write access violation.
this was 0x18.

我的数字标题:

#pragma一次
#包括
#包括
#包括
类点
{
公众:
配对坐标;
点()
{
coord=std::pair{0,0};
}
点(整数x,整数y)
{
coord=std::pair{x,y};
};
};
班级线
{
公众:
std::配对pts;
第()行
{
pts=std::pair{Point(),Point()};
}
直线(点p1、点p2)
{
pts=std::对{(点)p1,(点)p2};
};
};
班级人数
{
私人:
std::矢量线;
点p1=点();
点p2=点();
char*renderPath=FILEPATH;
公众:
图(){};
公众:
无效组件();
无效清除();
空洞移除线(内部索引);
void AddLine();
无效设置工作(整数x,整数y,布尔段);//真seg1,假seg2
//void Render();
};

我忘了在构造函数中设置指针。

选中的
是指针。你在什么地方说得对吗?请尝试向我们展示一个合适的对象。调试器说您有一个类型为
std::pair*
的对象,但是我在您发布的代码中没有看到该类型的对象。请提供一个。实际上,你的提示@Someprogrammerdude修复了它。我只是忘了在构造函数中设置指针。