Извините, если заголовок не имеет смысла. Я не знаю, как сказать это, поскольку я довольно новичок в C++. В принципе у меня есть это:Элемент структуры класса доступа 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' имеет тип' sf :: VertexArray * ',' vArray [0] 'является просто встроенной арифметикой указателя и имеет тип' sf :: VertexArray'. У этого типа нет 'operator->', и поэтому вы не можете сделать '-> position' на нем. Даже если у него был оператор 'sf :: Vertex * ->()', предположительно, он был бы реализован для возврата указателя на первую вершину в VertexArray, поэтому его использование было бы весьма ограниченным. Я ожидаю, что это не предусмотрено. –
Спасибо, теперь это немного лучше. – syy
Если у вас есть десятки строк, которые используют ** (* vArray) ** внутри блока, вы можете переустановить его как ссылку и использовать эту ссылку (будьте осторожны, чтобы не ** удалить ** указатель vArray до конца блока) * pvi = новый вектор (2,100); vector & vref = (* pvi); cout << vref [0] << endl; cout << vref [1] << endl; –
blackpen