首页 > 解决方案 > 如何创建用于存储和返回浮点数组的结构?

问题描述

我想创建一个保存方形纹理的纹理坐标的结构。该结构应该只有一个静态成员,它是一个由 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; }
};

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

标签: c++arrayspointers

解决方案


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

从右到左阅读指针声明。

const X* p 的意思是“p 指向一个 const 的 X”:X 对象不能通过 p 改变。

X* const p 表示“p 是指向非 const 的 X 的 const 指针”:您不能更改指针 p 本身,但可以通过 p 更改 X 对象。

const X* const p 的意思是“p 是一个指向 const 的 X 的 const 指针”:你不能改变指针 p 本身,也不能通过 p 改变 X 对象。

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

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

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


推荐阅读