如何在Android NDK的clases中使用静态变量?

时间:2015-07-04 18:24:39

标签: c++11 android-ndk static-variables

我只是尝试使用NDK编译一个简单的类(适用于GCC编译):

ShaderProgramManager.h:

namespace Graphics {

class ShaderProgramManager {
public:
    ShaderProgramManager();
    virtual ~ShaderProgramManager();
    static Graphics::ZGLProgram* ColoredVertexProgram;
};

} /* namespace Graphics */

ShaderProgramManager.cpp:

#include "ShaderProgramManager.h"

namespace Graphics {

ShaderProgramManager::ShaderProgramManager() {
    ShaderProgramManager::ColoredVertexProgram=new ZGLProgram();
}

错误是:

undefined reference to 'Graphics::ShaderProgramManager::ColoredVertexProgram'

如果我声明变量非静态,则没有问题。

1 个答案:

答案 0 :(得分:0)

确定。要正确定义静态变量,必须在编译单元和外部方法中重新声明它们。

在这种情况下正确的ShaderProgramManager.cpp:

#include "ShaderProgramManager.h"

namespace Graphics {

Graphics::ZGLProgram* ShaderProgramManager::ColoredVertexProgram;

ShaderProgramManager::ShaderProgramManager() {
    ColoredVertexProgram=new ZGLProgram();
}