C++ 无法更改成员变量的值
在我的程序中,我有一个名为ShaderManager的类,它封装了我使用的所有GLSL着色器,ShaderManager::LoadShader()应该在每次调用时增加可用着色器(shaderCount)的数量 问题是C++ 无法更改成员变量的值,c++,oop,C++,Oop,在我的程序中,我有一个名为ShaderManager的类,它封装了我使用的所有GLSL着色器,ShaderManager::LoadShader()应该在每次调用时增加可用着色器(shaderCount)的数量 问题是shaderCount++不增加shaderCount(无符号整数)的值。shaderCount将为0,即使在增量操作之后,它也将保持为零。当我写出shaderCount=shaderCount+1时也会出现同样的问题 在ShaderManager.cpp中: unsigned i
shaderCount++代码>不增加shaderCount(无符号整数)的值。shaderCount将为0,即使在增量操作之后,它也将保持为零。当我写出shaderCount=shaderCount+1
时也会出现同样的问题
在ShaderManager.cpp中:
unsigned int ShaderManager::LoadShader(const char* vertFilename, const char* fragFilename)
{
/* ... OpenGL code ... */
shaderCount = shaderCount + 1;
return shaders[shaderCount - 1];
}
ShaderManager::LoadShader()不是静态或常量
在ShaderManager.h中:
class ShaderManager
{
public:
static const unsigned int MAX_SHADERS = 32;
ShaderManager();
~ShaderManager();
unsigned int LoadShader(const char* vertFilename, const char* fragFilename);
static unsigned int GetShaderID(const unsigned int shader);
private:
unsigned int shaderCount;
void SetupDefaultShader();
static unsigned int shaders[MAX_SHADERS];
};
知道会发生什么吗?如果没有看到演示问题的示例,很难说问题是什么。好主意,我将尝试在较小的范围内重新创建问题。您应该发布一些更接近问题的应用程序代码(shaderCount=shaderCount+1;//如果要递增shaderCount,看起来很不错)首先使用调试器检查函数是否返回您认为返回的位置(它可以在++shaderCount或异常trow之前再次返回)然后再次检查,以确保LoadShader函数中没有另一个shaderCount局部变量。如果要实例化多个ShaderManager
实例,则为shaderCount
使用一个静态变量,而为shaderCount
使用一个实例变量,这看起来像是个问题问题,这段代码中一定有我们没有看到的东西。