我没有提出新的问题,而是通过完全删除前一个来编辑这个问题,希望能减少它的混乱。
文字墙。
我有一个具有一些基本值的基本结构,例如图像宽度,高度以及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 etc ..
然后我有一个或两个处理所有这些成员的循环,并按照深度值的顺序执行,在struct中定义并在初始化函数中设置。像这样(简化):
for (i=0;i<maxdepth;i++) {
if (instance[n].depth == i) { doStuff; }
}
&#34; doStuff&#34;功能我检查成员&#39;在switch语句中使用id值,然后让它们在case标签内做任何我想做的事情;这使我可以选择在同一个结构中有一些单独的行为。这就是问题所在。虽然这很好用,但我不能在某些成员中拥有单独的固定(或起始)变量而没有每个成员具有相同的变量,并且显然有足够的成员,这最终会导致一个结构非常大而且有很多冗余;资源浪费。例如,我希望一些成员拥有速度和方向变量,但不想将它们提供给不需要它们的相同结构的静态成员。
问题是,如何在不改变使用结构的基本思想的情况下实现这种效果,还是有更好的选择呢?
我很抱歉格式化和所有;这是我在这个网站上的第一个问题。
答案 0 :(得分:2)
我对结构的理解是,访问其各个变量所需的时间越长。
你的理解从根本上是错误的。结构的大小对访问该结构中的单个变量所需的时间几乎没有影响(如果有的话)。
然而,无论如何,构建数据的基本想法使得一个结构包含(或拥有指向)一些其他结构,这是完全正确和合理的。
使得指针基本上没有打字是不太好或不合理的,所以它可以引用任何其他类型。如果你想要一套衣服,你可能会从clothing
基础类开始,然后从中得到各种其他类型(外套,衬衫,休闲裤,牛仔裤等)。然后person
类型可能包含(例如)指向clothing
的指针向量,因此它可以包含指向从clothing
派生的所有其他类型的指针。
至于&#34;扩展范围&#34;好吧,除了我无法理解你在那里试图说些什么之外,我不能说太多。