我可以为全局数组的元素命名吗?

Sta*_*tan -2 c++

我有一个数组,MyStruct* my[100];我在循环中设置数据,如下所示:

if id > X && id < Y { my[id-X] = p;
Run Code Online (Sandbox Code Playgroud)

现在我想访问my[0]as name0my[1]as different1my[2]asanotherThing等。

我该怎么做呢?我尝试了union+X宏,但这在 gcc 中不起作用(它在 clang 中起作用)。

我想我必须编写一个脚本,这样我就不会手写所有的#defines,但我认为#define anotherThing my[2]这是给出数组项名称的唯一方法,对吗?我想简单地写different1->myStructMember,而不是my[123]->myStructMember每次都写,这样不可读。

lor*_*rro 6

您所需要的只是参考资料:

auto& NAME0 = my[0];
auto& different1 = my[1];
auto& anotherThing = my[2];
Run Code Online (Sandbox Code Playgroud)

如果您不立即初始化数组,那么您可以使用指针代替:

auto *NAME0 = my;
auto *different1 = my + 1;
auto *anotherThing = my + 2;
Run Code Online (Sandbox Code Playgroud)

  • 我怀疑你真正想要的是 `std::map&lt;std::string, MyStruct*&gt;` 作为你的集合类而不是数组。或者至少,字符串到数组索引之间的映射: `std::map&lt;std::string, size_t&gt;;` 然后您可以调用 `index = myMap["anotherThing"];` 然后说 `MyStruct*实例=我的[索引];` (3认同)