c++ - 如何将指针传递给结构数组?

标签 c++ arrays pointers struct

<分区>

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++ - 如何将指针传递给结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19410211/

相关文章:

c++ - 使用指针复制构造函数

头文件 c++11 中的 C++ 静态常量字符串

arrays - Swift 中带有数组的 For-In 循环中迭代器元素的可变性

java - 如何在不创建任何中间字符串的情况下将 char[] 转换为 byte[]

c - 多维数组中的指针

c++ - 延迟评估依赖类型 (CRTP)

c++ - 将文件的一部分读入 std::vector<char> 的有效方法?

python - PIL : Convert Bytearray to Image

c++ - 试图理解指针和双指针

Java:替代 LinkedList 或 int 指针数据结构