gpt4 book ai didi

c++ - #定义一个带索引的数组值

转载 作者:行者123 更新时间:2023-11-27 22:56:20 25 4
gpt4 key购买 nike

出于遗留原因,我需要维护旧的数组结构,但是编译器告诉我我的“表达式语法”存在问题。

这是我所拥有的:

#define Array[GlobalIndexVariable]    Get(GlobalIndexVariable)->SubType;

Get 返回指向结构的有效指针,该结构包含 SubType

现在我想象这会在每次出现 Array[GlobalIndexVariable] 时将其简单地转换为函数调用,但显然我错了。

我什至不知道在这种情况下要搜索什么,所以非常感谢您提供一点帮助。

非常感谢。

编辑:既然有人问了,这里是抛出错误的行之一:

LocalVariable = Array[GlobalIndexVariable];

我想强调的是,我并不是想把它变成一个,而只是想用替换Array[GlobalIndexVariable]; >Get(GlobalIndexVariable),因此只要使用 GlobalIndexVariable 以外的任何内容,替换就会失败并引发不同的错误。

编辑:

只是为了绝对确保我被理解:

现在我有 4 个 int 类型的长数组。我想将它们填充到一个结构中以标记它们属于一起(它们描述了同一事物的不同方面)但是我需要一个用于先前代码片段(几千次出现)的批量解决方案。

旧的:

int Index = 2;
int Array1[ANZ] = { 0, 1, 2 };
int Array2[ANZ] = { 0, 1, 2 };
int Array3[ANZ] = { 0, 1, 2 };
int Array4[ANZ] = { 0, 1, 2 };
if(Array1[Index] == 2) //doSomething

新:

struct {
int Type, Conf, Foo, Bar;
};
if(Array1[Index] == 2) //doSomething

在不触及 Array1[Index] == 2 的情况下,是否可以使用定义或其他方式来获得与旧代码之前完全相同的行为?

最佳答案

使用自定义类型,您可以这样做

struct MyType
{
int& operator[](int index) const { return Get(GlobalIndexVariable)->SubType; }
};

#define Array MyType{}

然后

Array[GlobalIndexVariable]

将被替换为

MyType{}[GlobalIndexVariable]

哪个会调用

Get(GlobalIndexVariable)->SubType;

关于c++ - #定义一个带索引的数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com