Это довольно длинное введение в простой вопрос, но в противном случае возникнут вопросы типа «Почему вы хотите обрабатывать пустые указатели в C ++? Вы ужасный человек!».Что я предпочел бы (а) void. :)
Я использую библиотеку C, из которой я извлекаю список полигонов, с которыми она будет работать.Функция, которую я использую, дает мне массив указателей (PolygonType**
), из которых я создаю std::vector<MyPolyType>
моего собственного класса многоугольников MyPolyType
.Это, в свою очередь, используется для создания boost::graph
с идентификаторами узлов, заданными индексом в векторе.
В более позднее время выполнения я хочу вычислить путь между двумя полигонами.Эти полигоны даны мне в виде двух PolygonType*
, но я хочу найти соответствующие узлы на моем графике.Я могу найти их, если я знаю индекс, который они имели в предыдущей векторной форме.
Теперь вопрос: структура PolygonType
имеет void*
к «внутреннему идентификатору», тип которого, кажется, мне неизвестен.Однако я знаю, что указатель увеличивается с фиксированным шагом (120 байт).И я знаю значение указателя, который будет смещением первого объекта.Могу ли я использовать это для вычисления моего индекса с помощью (p-p0)/120
, где p
- это адрес многоугольника, который я хочу найти, а p0
- это смещение первого многоугольника?Мне бы пришлось перевести адреса на int
с, это портативный?(Приложение можно использовать на Windows и Linux)