Расширение члена структуры с помощью другой структуры

Вместо того, чтобы задавать новый вопрос, я отредактирую этот, полностью удалив предыдущий, надеюсь, сделав его менее запутанным.

Стена текста.

У меня есть базовая структура, которая имеет некоторые базовые значения, такие как ширина изображения, высота и положения x и y, например:

struct obj {
int id = 0;
float x = 0;
float y = 0;
int image_w = 0;
int image_h = 0;
int depth = 0;
}

Затем у меня есть функция инициализатора, которая создает члены этой структуры и сохраняет их в массиве. Если этот массив называется «instance», то к отдельным членам и их значениям можно получить доступ, просто выполнив это: instance [number] .x и т. Д.

Затем у меня есть цикл или два, которые обрабатывают все эти члены и делают это в порядке их значения глубины, определенного в struct и установленного в функции initializer. Вот так (упрощенно):

for (i=0;i<maxdepth;i++) {
if (instance[n].depth == i) { doStuff; }
}

В функции «doStuff» я проверяю значение идентификатора членов в выражении switch, а затем заставляю их делать все, что я хочу, внутри меток case; это дает мне возможность иметь некоторое индивидуальное поведение в одной структуре. И вот где проблема. Хотя это работает очень хорошо, я не могу иметь отдельные фиксированные (или начальные) переменные внутри определенных членов без того, чтобы у каждого члена были те же переменные, и, очевидно, с достаточным количеством членов, это в конечном итоге приводит к структуре, которая просто нежелательно велика и имеет много избыточности; потраченные впустую ресурсы. Например, я хочу, чтобы у некоторых членов были переменные скорости и направления, но я не хочу передавать их статическим членам той же структуры, в которых они не нужны.

Вопрос в том, как мне добиться этого эффекта, не меняя фундаментальную идею использования структур, или есть лучшая альтернатива для этого?

И я извиняюсь за форматирование и все; это мой первый вопрос на этом сайте.

-2

Решение

Мое понимание структур состоит в том, что чем оно больше, тем больше времени требуется для доступа к его отдельным переменным.

Ваше понимание в корне ошибочно. Размер структуры мало влияет (если есть) на время, необходимое для доступа к отдельной переменной внутри этой структуры.

Независимо от этого, однако, ваш основной Идея структурирования данных таким образом, чтобы одна структура содержала (или имела указатель на) некоторые другие структуры, совершенно прекрасна и разумна.

То, что не так хорошо или разумно, делает этот указатель практически нетипизированным, чтобы он мог ссылаться на любой другой тип. Если вы хотите коллекцию одежды, вы, вероятно, начали бы с clothing базовый класс, а затем выводят из него различные другие типы (пальто, рубашка, брюки, джинсы и т. д.). Тогда person Тип может содержать (например) вектор указателей на clothingпоэтому он может содержать указатели на все другие типы, полученные из clothing,

Что касается «расширения сферы действия» … ну, я не могу сказать ничего, кроме того факта, что не могу понять, что вы там пытаетесь сказать.

2

Другие решения


По вопросам рекламы [email protected]