Размещение в памяти
От: Евгений Коробко  
Дата: 26.05.04 07:11
Оценка:
Есть такой код:
struct Point
{
float x,y,z;
}
struct TextureXY
{
float tu,tv;
}
struct TexturedPoint : public Point, public TextureXY
{
}
struct TexturedPoint2
{
float x,y,z;
float tu,tv;
}

Можно ли быть уверенным, что TexturedPoint и TexturedPoint2 имеют одинаковое
размещение полей в памяти? Предполагается, что виртуальных методов нет и не
будет.
Евгений Коробко
Re: Размещение в памяти
От: Vamp Россия  
Дата: 26.05.04 07:13
Оценка:
Полагаю, что нет.
Да здравствует мыло душистое и веревка пушистая.
Re: Размещение в памяти
От: Bell Россия  
Дата: 26.05.04 07:31
Оценка: +1
Здравствуйте, Евгений Коробко, Вы писали:

Стандарт дает гарантии layout-compatibility только для POD структур и объединений, а в твоем случае имеет место быть наследование, так что TexturedPoint — уже не POD — структура.
Любите книгу — источник знаний (с) М.Горький
Re[2]: Размещение в памяти
От: Евгений Коробко  
Дата: 26.05.04 08:36
Оценка:
Подозреваю, что в VC всё будет как надо, но в реальных приложениях этого делать нельзя.
Собственно, идея была такой. Работа с графикой через DX. Есть ряд алгоритмов, обрабатывающих трёхмерные точки. Ну там разбиение на восьмеричное дерево и пр. Было бы здорово научить его работать с указателями на Point, а вертексы просто наследовать. Тогда при добавлении пары текстурных координат всё бы продолжало работать как и должно. Через шаблон, конечно, можно, но неэффективно — для каждого типа вертекса генерить свои алгоритмы, которые бдут отличаться только смещениями полей структуры.
Posted via RSDN NNTP Server 1.9 alpha
Евгений Коробко
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.