使用数组指针的C ++访问类struct成员

时间:2016-09-11 22:57:00

标签: c++ pointers

很抱歉,如果标题没有意义。我不知道怎么说它,因为我对C ++很新。基本上我有这个:

sf::VertexArray *vArray;

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

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

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

任何帮助将不胜感激!

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

1 个答案:

答案 0 :(得分:3)

如果您原来的行

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

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

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

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

或者,您可以将->强制转换为此表达式

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

但这没有多大实际意义。

你甚至可以将两者结合起来

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

达到更加模糊和毫无意义的东西。

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