C++ 带有static/const的变量,在这种情况下使用哪个?

C++ 带有static/const的变量,在这种情况下使用哪个?,c++,class,opengl,static,constants,C++,Class,Opengl,Static,Constants,我试图创建一个由块组成的小“世界”,类似于体素引擎,但有点不同 为此,我考虑创建一个类,比如说Block,它有一个方法draw()。让我们把块看作一个长方体。然后,我可以通过长度、宽度、高度来刻画每个块的特征,并通过固定顶点数组(即以原点为中心的单位立方体)的模型矩阵对其进行缩放来绘制 我的问题是:声明这个由8个GLfloat类型的顶点组成的数组(即24个GLfloat条目)的最佳方式是什么。由于我可能有很多块,我希望数组只保存一次,并且块的每个实例都将使用这个精确的数组,而不是将它与每个块一起

我试图创建一个由块组成的小“世界”,类似于体素引擎,但有点不同

为此,我考虑创建一个类,比如说
Block
,它有一个方法
draw()
。让我们把
块看作一个长方体。然后,我可以通过长度、宽度、高度来刻画每个
块的特征,并通过固定顶点数组(即以原点为中心的单位立方体)的模型矩阵对其进行缩放来绘制

我的问题是:声明这个由8个
GLfloat
类型的顶点组成的数组(即24个
GLfloat
条目)的最佳方式是什么。由于我可能有很多块,我希望数组只保存一次,并且
的每个实例都将使用这个精确的数组,而不是将它与每个
一起携带。实现这一目标的最佳方式是什么? 因为我对这方面还不太熟悉,所以我无法真正理解
static
const
(或两者兼而有之)是否有帮助。我想做些什么

const GLfloat unit_cube_vertices = { ... };

class Block
{ ... };

有更好的/规范的方法吗?

这个问题似乎与static/const没有多大关系。这两个关键字只告诉C++如何访问存储,以及它应该在哪里可见。你所做的一切都很好

const
表示不能再更改变量。在极少数情况下,如果编译器知道值不会改变,它可以优化代码


static
指的是对象在不同编译单元中的可见性(~项目中的不同文件)。在其他编译单元中将看不到带有
静态链接的变量。

如果数组仅由类使用(或与类相关),我会将其声明为类的一部分(注意,这里的静态表示只有一个副本),即


如果要在全球范围内使用,请按照您声明的方式保存。

谢谢!“按您声明的方式保存”,您的意思是我不应该添加
静态
,还是这无关紧要?取决于您想对数组执行什么操作。。。如果您正在声明它并且只需要在一个源文件中使用它,那么使用
static
是合适的(这意味着您不能在其他源文件中使用它)。如果您想在源文件中使用它,通常会将它作为
extern
放在头文件中,然后在源文件中不使用
static
class Block {
public:  // or private if not used anywhere else
    static const GLfloat unit_cube_vertices[24];
};