【发布时间】:2018-03-24 19:23:33
【问题描述】:
我想检查结构数组的所有值是否都保持相同的值,以便在结构数组中隐藏“已删除”条目。
我的结构是这样的:
struct spawnedObject {
Hash objHash;
Object obj;
char* displayname;
int invisibility;
Vector3 position;
int deleted; // 1=deleted and hidden, 0=should be listed and available
};
我想检查结构中所有条目的deleted 是否为真。当它们都为真时,让else 显示空文本。
我尝试循环所有deleted 值并在将值设置为1 时增加一个int,如下所示:
void objectManagerMenu() {
objectVar = 0;
int inc = 0; //store deleted entries count
// loop through all entries. if entry deleted, increase.
for (int i = 0; i < objectCount; i++) {
if(spawnedObjects[i].deleted) inc++;
}
// check if there either are no entries, or if theyre hidden. if all stored entries are hidden, fallback to else. this is where it goes wrong.
// problem: does not seem to fallback to else.
if(objectCount != 0 || objectCount != inc) {
for (int i = 0; i < objectCount; i++) {
if(!spawnedObjects[i].deleted) { // remove hidden items from list
char buffer[150];
sprintf(buffer, "[ %i ] %s", i, spawnedObjects[i].displayname);
menu.option(buffer).call(objectItemVar, i).submenu(objectItemMenu);
}
}
} else {
menu.option("Empty");
}
}
似乎不起作用,因为没有显示任何内容。
有没有人建议我如何以更聪明的方式做到这一点?
【问题讨论】:
-
有人有想法吗?
-
请耐心等待,因为像我这样的人刚刚开始阅读
-
真的很难理解你到底想用给出的代码和你的几句话做什么。注释您的代码以解释一些变量,例如 menu 或 inc。也是||在 if 语句中你真的想做什么?根据我的猜测,您可能想使用 && 而不是 ||
-
@RIJIK 对不起。该方法基本上是“删除”menu 中的条目。删除条目后,结构中的
deleted将设置为1,并且该条目将从列表中隐藏。工作正常,但是当所有内容都“删除”时(在deleted中将所有条目设置为1),它什么也不显示。我想在数组结构中有条目但在deleted中设置为1时显示“空”文本。希望我解释得很好。 -
已将 cmets 添加到我的代码中。