c++ - 如何创建用于存储和返回浮点数组的结构?
问题描述
我想创建一个保存方形纹理的纹理坐标的结构。该结构应该只有一个静态成员,它是一个由 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 指向一个 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。
推荐阅读
- python - 在 Colab 环境中使用 xxd 时,它在 bash 中执行
- java - cvc-complex-type.2.4.c:匹配通配符是严格的,但找不到元素“jaxrs:server”的声明
- javascript - 打鼹鼠游戏麻烦
- php - Laravel 如何在分类帖子上添加 orderBy
- scala - Gatling.bat 命令行选项,它们是如何工作的?
- sql-server - 如何使用经典 ASP 更新 SQL 中的多条记录
- oracle - pl sql插入到过程和动态变量中
- python - 如何仅提取每个 tr 中的第一个 td[0]
- python - 目标检测模型的性能上下跳跃
- typescript - “此类型上不应存在成员”的 TypeScript 类型声明?