如何创建用于存储和返回浮点数数组的结构

How do I create a struct for storing and returning an array of floats?

本文关键字:返回 浮点数 数组 结构 存储 用于 何创建 创建      更新时间:2023-10-16

我想创建一个结构来保存方形纹理的纹理坐标。该结构应该只有一个静态成员,它是一个由 8 个浮点数组成的常量数组,并且只有一个返回数组的函数。

我试过这个:

struct TextureCoordinates
{
    static constexpr GLfloat m_texturecoords[8] = {
            1.0f, 0.0f,
            1.0f, 1.0f,
            0.0f, 1.0f,
            0.0f, 0.0f,
    };
    GLfloat* const gettexcoords() { return &m_texturecoords; }
};

但是我收到一个错误,指出返回类型与函数类型不匹配。如何更改此结构以使其以节省内存的方式工作?

GLfloat* const表示 GLfloat 指针是 const,即指针而不是它指向的值是 const。从 https://isocpp.org/wiki/faq/const-correctness#const-ptr-vs-ptr-const:

从右到左读取指针声明。

const X* p 表示"p 指向一个常量 X":X 对象不能 通过 p 更改。

X* const p 表示"p 是指向 X 的常量指针,该指针位于 是非常量":你不能改变指针 p 本身,但你可以 通过 p 更改 X 对象。

const X* const p 表示"p is a const 指向 X 的指针是 const":你不能改变指针 p 本身, 您也不能通过 p 更改 X 对象。

您需要返回const GLfloat*.由于该方法不属于特定对象,因此它可以是静态的。

static const GLfloat* gettexcoords() { return m_texturecoords; }

演示:http://ideone.com/6f1enU。