将int传递给函数,然后使用该int创建数组

时间:2015-06-15 23:32:03

标签: c++ arrays opengl

我试图为我的openGL项目创建一个textureLoader类,我不能在我的类构造函数中初始化一个纹理数组,因为该数组不会接受任何东西,除非它&#39 ; sa const int。

为您描绘一幅简单的图片......

myFunction(NUM)
  {
  GLuint textures[NUM];
  }

我的过去失败

myConstructor(const int& num)
  {
   GLuint textures[num] //error: expression must have a constant value
  }
myConstructor(int num)
{
std::vector <GLuint> textures(num);//works but wait
glGenTextures(num, textures) // <--- doesn't work cause vectors. 
}
myConstructor(int num)
{
const int PLEASE_WORK = num;
GLuint textures[PLEASE_WORK]; // doesn't work. 

1 个答案:

答案 0 :(得分:3)

您的第二个选项已关闭,您可以通过调用.data()来获取向量的基础数组

myConstructor(int num)
{
    std::vector <GLuint> textures(num);
    glGenTextures(num, textures.data());
}

假设glGenTextures有一个像

这样的签名
void glGenTextures(int, GLuint*)

我对这个功能一无所知,但要小心谁拥有该阵列。 vector将在构造函数之后超出范围,因此我希望glGenTextures将复制它所需的任何内容。否则,如果数组需要持久化

myConstructor(int num)
{
    GLuint* textures = new GLuint[num];
    glGenTextures(num, textures);
}

但是我不确定是谁应该清理那段记忆。