使用数组指针访问类结构成员

C++ access class struct member using an array pointer

本文关键字:结构 成员 访问 指针 数组      更新时间:2023-10-16

对不起,如果标题没有意义。我不知道如何形容,因为我对c++还是个新手。这里是:

sf::VertexArray *vArray;

如果我想访问里面的position,我必须这样做:

(*vArray)[0].position = ...;

是否有办法使用箭头符号代替?为什么我不能这样做:vArray[0]->position = ...; ?

任何帮助将不胜感激!

EDIT: sf::VertexArray是SFML库的一部分:https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/VertexArray.cpp

如果您的原始行

(*vArray)[0].position = ...;

正确地说明了数据结构的语义,那么基于->的模拟将是

vArray->operator [](0).position = ...;

假设sf::VertexArray是具有重载操作符[]的类类型。显然,第二种形式要复杂得多,需要显式地引用操作符成员函数,这就是为什么使用更优雅的第一种形式是更好的主意。

或者,您可以强制将->作为

插入此表达式。
(&(*vArray)[0])->position = ...;

但这没有多大实际意义。

你甚至可以把这两个

结合起来
(&vArray->operator [](0))->position = ...;

得到一些更加混乱和毫无意义的东西。

无论如何,为什么要在这个表达式中有一个-> ?你想达到什么目标?