Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法更改成员变量的值_C++_Oop - Fatal编程技术网

C++ 无法更改成员变量的值

C++ 无法更改成员变量的值,c++,oop,C++,Oop,在我的程序中,我有一个名为ShaderManager的类,它封装了我使用的所有GLSL着色器,ShaderManager::LoadShader()应该在每次调用时增加可用着色器(shaderCount)的数量 问题是shaderCount++不增加shaderCount(无符号整数)的值。shaderCount将为0,即使在增量操作之后,它也将保持为零。当我写出shaderCount=shaderCount+1时也会出现同样的问题 在ShaderManager.cpp中: unsigned i

在我的程序中,我有一个名为ShaderManager的类,它封装了我使用的所有GLSL着色器,ShaderManager::LoadShader()应该在每次调用时增加可用着色器(shaderCount)的数量

问题是
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
使用一个实例变量,这看起来像是个问题问题,这段代码中一定有我们没有看到的东西。