双递归结构
double-recursive structs
我对如何创建两个相互引用的结构感到困惑。我找不到像以前问过的任何问题。
所以,我知道这将编译得很好:
struct MyStruct {
MyStruct* p;
};
但是,例如,
struct A {
B* pBstruct;
};
struct B {
A* pAstruct;
};
这不会编译。
你需要一个前向声明来使类型已知:
struct B;
struct A {
B* pBstruct;
};
struct B {
A* pAstruct;
};
所以,我知道我问了这个问题,但我想通了,并认为回答这个问题可能会对其他人有所帮助。
就像制作递归函数一样,结构也必须进行原型设计。
因此,请考虑制作递归函数:
int fnc_a();
int fnc_b();
int fnc_a()
{
fnc_b();
}
int fnc_b()
{
fnc_a();
}
前两行标识为函数的原型,以便在提供其实际定义/声明之前可以使用它们。
现在考虑再次创建两个递归结构:
struct A;
struct B;
struct A {
B* pBstruct;
};
struct B {
A* pAstruct;
};
前两行声明了这两个结构的存在,以便在声明它们之前可以使用它们。(不要费心评论我只需要 B 结构原型的事实 - 我确实认识到这一点)
最后一点,不要忘记使用结构"指针"变量而不是结构变量。这不会编译,因为它会创建一个无限大的结构:
struct A;
struct B;
struct A {
B pBstruct;
};
struct B {
A pAstruct;
};
相关文章:
- 二叉树结构平衡,使用递归时EXC_BAD_ACCESS
- 如何在C++中表示JSON文档的递归对象结构?
- C++ 递归返回 nullptr 中的结构 ?.
- 递归如何使用堆栈数据结构
- 如何制作递归编译时间变异结构模板
- 没有指针的递归结构?(霍夫曼)
- 使用boost::序列化递归图结构时,如何防止堆栈溢出
- 递归结构的向量有内存问题
- C++,一个通用递归模板函数,用于遍历树状结构
- 如果结构作为递归函数中的参数传递,如何初始化结构的成员变量
- 节省增强精神递归匹配结果为C 结构
- 用载体建立在苍蝇递归结构上
- 双递归结构
- 如何计算递归结构
- 使用结构和递归查找整数数组中的最大数字
- 协议缓冲区、Apache Thrift或任何其他数据结构序列化协议中的递归数据结构
- 递归类型真的是构建不连续的任意大小数据结构的唯一方法吗
- 可变参数模板实例化中的无限递归,试图构建任意深度的树状结构
- 递归数据结构的前向声明
- 正在分析boost::spirit上的递归结构