Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 结构中的结构内部的结构_C++_Struct_Typedef - Fatal编程技术网

C++ 结构中的结构内部的结构

C++ 结构中的结构内部的结构,c++,struct,typedef,C++,Struct,Typedef,我不知道该如何命名这个问题,但您可以从代码中了解发生了什么: typedef struct A { B* FirstB; //Some methods... } typdef struct B { A* FirstA //Some methods... } 我试图创建一个结构,其中包含一个结构,并且该结构中包含一个指向该结构自身的实例指针。这很难解释,但代码很好地说明了这一点 我不是C++中最伟大的,所以有人能指出我做这种事情的正确方向吗?谢谢。您最可

我不知道该如何命名这个问题,但您可以从代码中了解发生了什么:

typedef struct A {
     B* FirstB;
     //Some methods...
}

typdef struct B
{
     A* FirstA
     //Some methods...
}
我试图创建一个结构,其中包含一个结构,并且该结构中包含一个指向该结构自身的实例指针。这很难解释,但代码很好地说明了这一点


我不是C++中最伟大的,所以有人能指出我做这种事情的正确方向吗?谢谢。

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

第一行告诉编译器有一个名为
B
的结构。但它并没有告诉它结构中有什么。这样,您就可以在
a
中声明a
B*
。但是,在声明
B
之前,您将无法取消引用该指针,因为编译器在此之前不知道a
B
实际拥有哪些成员。因此,您将希望确保在
A
B
中声明您的方法,但在声明这两个方法之后实现它们

下面是一个完整的示例,包括方法:

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
}

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

第一行告诉编译器有一个名为
B
的结构。但它并没有告诉它结构中有什么。这样,您就可以在
a
中声明a
B*
。但是,在声明
B
之前,您将无法取消引用该指针,因为编译器在此之前不知道a
B
实际拥有哪些成员。因此,您将希望确保在
A
B
中声明您的方法,但在声明这两个方法之后实现它们

下面是一个完整的示例,包括方法:

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
}

你的实际问题是什么?如何做到这一点…(使用内部方法)你遇到了什么问题?到目前为止,你读过哪些文件材料?像这样的问题肯定有十亿个。在重新提问之前,你需要通读其中的一些内容。你试过了吗?做一些typedef,构建你的顶级结构并构造它。你真正的问题是什么?如何实现这一点…(使用内部方法)你遇到了什么问题?到目前为止,你读过哪些文件材料?像这样的问题肯定有十亿个。在重新提问之前,你需要通读其中的一些内容。你试过了吗?做一些typedef,构建你的顶级结构并构造它。@lanPudney这很好而且很有效!但是,如何用其中的方法也能做到这一点呢?@lanPudney这很好,也很有效!但是,如何使用其中的方法也能做到这一点呢?