如何将指针传递给结构数组
How to pass pointer to array of structures?
struct A
{
struct one
{
int c;
} details[MAX];
};
struct B
{
struct two
{
int a;
A::one b
} details[MAX];
};
有一个如下所示的验证函数来验证结构 A 中结构的详细信息数组:
bool ValidateOne(struct one * ptr)
{
struct one * tmp[MAX];
for (int i = 0; i < MAX; ++i)
tmp[i] = ptr+i;
Validate(tmp[0]);
}
然后需要对结构 B 的细节数组进行验证:我希望做:
bool ValidateTwo(struct two * ptr)
{
struct one * tmp[MAX];
for (int i = 0; i < MAX; ++i)
tmp[i] = &((ptr+i)->b);
Validate(tmp[0]);
//validate other stuff
};
Validate(struct one * ptrs[])
{
int count;
for (int i = 0; i < MAX; ++i)
count += ptrs[i]->a;
}
上面的代码会起作用吗?
您可以定义一个迭代器类型,该迭代器类型知道如何到达数组中的下一项。"A::iterator"将在一个简单的"一"数组上运行。"B::iterator"将在 B::two 的数组上运行。
这样,无论哪种情况,您都不需要创建单独的指针数组,只需创建迭代器的两种不同实现即可。
如果使用模板完成,则"ValidateOne()"也必须是模板。如果使用虚拟函数完成,则不需要模板。
相关文章:
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组