很抱歉,如果标题没有意义。我不知道怎么说它,因为我对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
答案 0 :(得分:3)
如果您原来的行
(*vArray)[0].position = ...;
正确地说明了数据结构的语义,然后基于->
的模拟将是
vArray->operator [](0).position = ...;
假设sf::VertexArray
是具有重载运算符[]
的类类型。显然,第二种形式更复杂,需要明确引用运算符成员函数,这就是为什么使用更优雅的第一种形式更好的主意。
或者,您可以将->
强制转换为此表达式
(&(*vArray)[0])->position = ...;
但这没有多大实际意义。
你甚至可以将两者结合起来
(&vArray->operator [](0))->position = ...;
达到更加模糊和毫无意义的东西。
无论如何,为什么你想在这个表达式中有一个->
?你想要实现什么目标?