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
中声明aB*
。但是,在声明B
之前,您将无法取消引用该指针,因为编译器在此之前不知道aB
实际拥有哪些成员。因此,您将希望确保在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
中声明aB*
。但是,在声明B
之前,您将无法取消引用该指针,因为编译器在此之前不知道aB
实际拥有哪些成员。因此,您将希望确保在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这很好,也很有效!但是,如何使用其中的方法也能做到这一点呢?