gpt4 book ai didi

c++ - 在 C++ 中迭代指向实例的指针数组所需的声明

转载 作者:行者123 更新时间:2023-11-30 04:02:16 25 4
gpt4 key购买 nike

首先,我这里的目标是 Arduino。请不要建议我使用 STL、Boost 或任何其他类型的库,或任何需要 newmalloc() 的库。这对我的情况不切实际。

我有一堆指向 Foo 实例的指针数组,声明如下:

Foo *group0[] = { &foo0, &foo1, &foo2};
Foo *group1[] = { &foo3, &foo4, &foo5};
Foo *group2[] = { &foo6, &foo7, &foo8};

如何声明这些组的数组,并对其进行迭代?

(我了解数组、for 循环和指针,但声明的 C++ 语法让我费尽心思。)

最佳答案

下面的代码创建了一组数组,然后遍历它,为每个实例化 (foo[0-8]) 调用一个 Foo 方法。它对涉及的数组的内容(即 i 和 j 的边界)做了一些假设,但它应该适用于示例,并且应该很容易根据您的喜好进行自定义:

#include <iostream>

// Example Foo class (instantiated with foo[0-8]).
class Foo
{
public:

Foo(int x)
{
bar = x;
}

void FooMethod()
{
std::cout << bar << std::endl;
}

private:

int bar;
};

int main(int argc, char* argv[])
{
// Instantiate foo[0-8].
Foo foo0 = Foo(0);
Foo foo1 = Foo(1);
Foo foo2 = Foo(2);
Foo foo3 = Foo(3);
Foo foo4 = Foo(4);
Foo foo5 = Foo(5);
Foo foo6 = Foo(6);
Foo foo7 = Foo(7);
Foo foo8 = Foo(8);

// Declare Foo group arrays of, type Foo*.
Foo* group0[] = { &foo0, &foo1, &foo2 };
Foo* group1[] = { &foo3, &foo4, &foo5 };
Foo* group2[] = { &foo6, &foo7, &foo8 };

// Declare Foo* group array to hold Foo groups, of type Foo**.
Foo** groups[] = { group0, group1, group2 };

// Iterate through Foo groups and over each individual Foo object.
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 3; ++j)
{
// Do something with Foo (i.e. invoke its member method).
groups[i][j]->FooMethod();
}
}
}

输出:

0
1
2
3
4
5
6
7
8

我希望这能回答您的问题。如果没有,请告诉我,我会看看我能做些什么:)

关于c++ - 在 C++ 中迭代指向实例的指针数组所需的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219647/

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