首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构中的结构内部的结构

结构中的结构内部的结构
EN

Stack Overflow用户
提问于 2015-05-03 02:42:57
回答 1查看 74关注 0票数 0

我不确定如何命名这个问题,但您可以从代码中了解正在发生的事情:

代码语言:javascript
复制
typedef struct A {
     B* FirstB;
     //Some methods...
}

typdef struct B
{
     A* FirstA
     //Some methods...
}

我正在尝试一个结构体,它里面有一个结构体,这个结构体中有一个指向它自身的结构体的实例指针。这很难解释,但代码很好地说明了这一点。

我在C++并不是最棒的,所以有没有人能为我指出做这样的事情的正确方向?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-05-03 02:50:52

您最有可能遇到的问题是,在声明另一个结构之前,您无法声明每个指针,因此无法将一个指针放在另一个结构之前。解决方案是向前声明。

代码语言:javascript
复制
struct B;
struct A {
     B* FirstB;
     //Some methods...
}

struct B
{
     A* FirstA
     //Some methods...
}

第一行告诉编译器有一个名为B的结构。但是,它不会告诉它该结构中有什么。这样,您就可以很好地在A中声明B*。但是,在声明B之前,您将无法取消对该指针的引用,因为在此之前,编译器不知道B实际具有哪些成员。因此,您需要确保在AB中声明您的方法,但要在这两个方法都声明之后才实现它们。

下面是一个完整的示例,其中包含方法:

代码语言:javascript
复制
struct B;
struct A {
     B* FirstB;
     int foo();
};

struct B
{
     A* FirstA;
     int x;
};

A::foo() {
    return FirstB->x;
}

int main() {
    A outer;
    B inner;
    outer.FirstB = &B;
    inner.FirstA = &A;
    inner.x = 3;
    outer.foo(); //returns 3
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30006100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档