gpt4 book ai didi

c++ - 在类中初始化静态常量数组 - C++

转载 作者:行者123 更新时间:2023-12-01 14:47:41 29 4
gpt4 key购买 nike

考虑下面的代码,我用 #this 标记了重要的行象征:

#include <glad/include/glad/glad.h>
#include <string>
#include <iostream>

#ifndef LAMP_H
#define LAMP_H
namespace lmp{

class genLamp{
unsigned int lmpVAO;
static const float flag{1}; //#this is allowed
static const float default_shape[]{ //#this is not allowed
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
0.5f, -0.5f, -0.5f, 1.0f, 0.0f,
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,

-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
-0.5f, 0.5f, 0.5f, 0.0f, 1.0f,
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,

-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
-0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,

0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,

-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
0.5f, -0.5f, -0.5f, 1.0f, 1.0f,
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,

-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
-0.5f, 0.5f, 0.5f, 0.0f, 0.0f,
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f
};

genLamp(std::string vShaderPath, std::string fShaderPath){
glGenVertexArrays(1, &lmpVAO);
glBindVertexArray(lmpVAO);


}

unsigned int getVAO(){
return this->lmpVAO;
}

};

}

#endif

首先, 为什么这甚至是不允许的,语言试图通过阻止这个来阻止什么问题 ?和,

default_shape无论如何,对象之间的数组将是相同的,我试图通过将其设为静态来共享此数组。但是,这似乎不太可能。我唯一能想到的就是将变量声明为全局范围,这在我的情况下不太好。是否 c++有任何语法来声明和初始化 static const arrays ?我正在编译 c++17如果信息有用。

编辑:如果可能,请解释@user 的答案

最佳答案

制作它们 inline .以下代码编译。

class Temp {
inline static const float values[] = { 0.0f, 1.0f };
};

或者更好,
class Temp {
constexpr static float values[] = { 0.0f, 1.0f };
};

感谢约翰指出这一点。

关于c++ - 在类中初始化静态常量数组 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62242578/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com