Вместо того, чтобы задавать новый вопрос, я отредактирую это, полностью стирая предыдущий, надеясь сделать его менее запутанным.Расширение элемента структуры с другой структурой
Стена с текстом.
У меня есть основная структура, которая имеет некоторые базовые значения, такие как ширина изображения, высоту и х и у позиций, например так:
struct obj {
int id = 0;
float x = 0;
float y = 0;
int image_w = 0;
int image_h = 0;
int depth = 0;
}
Я тогда иметь функцию инициализатора, которая создает член этой структуры и сохраняет их в массиве. Если этот массив называется «экземпляр», то отдельные члены и их значения могут быть доступны, просто сделав это: instance [number] .x и т. Д.
Тогда у меня есть петля или два, которые обрабатывают все эти элементы и делают это в порядке их значения глубины, определенных в структуре и заданных в функции инициализации. Как так (упрощенно):
for (i=0;i<maxdepth;i++) {
if (instance[n].depth == i) { doStuff; }
}
В функции «DoStuff» Я проверяю значение И.Д. членов в распределительном заявление, а затем попросите их сделать то, что я хочу, внутри ярлыки дела; это дает мне возможность иметь какое-то индивидуальное поведение внутри одной и той же структуры. И вот здесь проблема. Хотя это работает очень хорошо, я не могу иметь отдельные фиксированные (или начальные) переменные внутри определенных членов, без каждого члена, имеющего те же самые переменные, и, очевидно, с достаточным количеством членов, это в конечном итоге приводит к структуре, которая просто нежелательно большая и имеет много избыточности; потраченные впустую ресурсы. Например, я хочу, чтобы некоторые члены имели переменные скорости и направления, но не хотели бы предоставлять их статическим членам той же структуры, которая им не нужна.
Вопрос в том, как я могу достичь этого эффекта без изменения фундаментальной идеи использования структур или есть ли более эффективная альтернатива для этого?
И прошу прощения за форматирование и все; это мой первый вопрос на этом сайте.
Кодовые примеры того, что вы хотите (даже в не компилируемом псевдокоде, пока вы его заявляете) намного лучше, чем рассказывать длинные истории в прозе. –
Если это короткая история, я боюсь увидеть длинную историю :) –
Я не пытаюсь быть смешным или что-то еще, но * assing * a struct into another - не такая хорошая идея. Не делайте этого, плохие вещи случаются, когда вы пытаетесь это сделать. –