C++ C++;简单对象销毁错误
我已经写了一段代码,在它的类声明中包含一个常量变量。但是,我在类的函数中初始化变量的值。在整个课程中,我可以毫不费力地使用这个变量。但当我试图通过类的另一个函数访问该变量时,我不能。它的值似乎设置为C++ C++;简单对象销毁错误,c++,C++,我已经写了一段代码,在它的类声明中包含一个常量变量。但是,我在类的函数中初始化变量的值。在整个课程中,我可以毫不费力地使用这个变量。但当我试图通过类的另一个函数访问该变量时,我不能。它的值似乎设置为NULL。下面是类的声明(仅限变量部分) 我正在一个名为LoadModel() 如果我在使用此变量的LoadModel()函数中调用名为Update()的函数,它工作得很好,但是当我在同一类的Render()函数中调用它时,程序崩溃。我可以在调试器中看到,pScene有一些错误“无法读取内存”使变量“
NULL
。下面是类的声明(仅限变量部分)
我正在一个名为LoadModel()
如果我在使用此变量的
LoadModel()
函数中调用名为Update()
的函数,它工作得很好,但是当我在同一类的Render()
函数中调用它时,程序崩溃。我可以在调试器中看到,pScene
有一些错误“无法读取内存”使变量“imp”成为全局变量。愚蠢的错误 pScene
成员无论如何都不是const;它指向的是常量。我初始化类函数中变量的值
不可能。您混淆了初始化和赋值。好吧,但当我试图通过其他函数访问它时,为什么它是空的?它不是一个可以被任何成员函数访问的类变量吗?@user3163223:是的,应该是。它已被您的某些代码修改,或被内存损坏覆盖。如果我没有进一步的猜测,那将是毫无意义的。请注意,除非您能提供其他证明,否则没有理由特别假设指针已变为NULL
。不可访问的位置看起来像是对指针的覆盖,无论是在Render()中还是通过调用Render()之前的代码。您可以通过在ReadFile()之后直接打印pScene的值来进行一些printf调试,然后在关键点打印pScene的值。我认为讨论有助于发现错误,因此它不是徒劳的。
public:
const aiScene *pScene;
pScene = imp.ReadFile(fileName,
aiProcess_CalcTangentSpace |
aiProcess_ConvertToLeftHanded |
aiProcess_Triangulate |
aiProcess_GenSmoothNormals |
aiProcess_OptimizeMeshes);
if (pScene == NULL)
MessageBoxA(NULL, imp.GetErrorString(), "Error", MB_OK);