[英]C++ structs Interdependency
您好,我在同一个Header文件中声明了需要互相使用的结构。
struct A; // ignored by the compiler
struct B{
A _iNeedA; //Compiler error Here
};
struct A {
B _iNeedB;
};
这项工作正常
class A;
class B{
A _iNeedA;
};
class A {
B _iNeedB;
};
// everything is good
非常感谢你!
这行不通: A
包含B
包含A
包含B
包含…。 在哪里停下来?
您可以为循环依赖关系建模的所有方法是使用指针:
class A;
class B {
A* _iNeedA;
};
class A {
B* _iNeedB;
};
现在,这些类不再包含彼此,而只是相互引用。
此外,您还需要注意不能使用尚未定义的内容 :在上面的代码中,在定义B
之前已声明 A
因此,可以在B
声明指向 A
指针 。 但是在定义它之前您还不能使用 A
我回答我自己的问题。
事实是我在做什么并不完全是我发布的内容,但我是同一回事,实际上我正在使用带有参数的运算符。 这些操作符主体必须在我的结构声明之后(在结构外部)定义,因为结构B尚不知道结构A成员...
我说它正在与类一起使用,因为对于类,我们通常使用CPP文件进行方法定义,这里我没有将任何cpp文件用于结构中使用的方法
我本打算删除这篇文章,但是你们太快了;),
这是一个例子
struct A;
struct B {
int member;
bool operator<(const A& right); //body not defined
};
struct A {
int member;
bool operator<(const B& right)
{
return this->member < B.member;
}
};
bool B::operator<(const A& right) //define the body here after struct A definition
{
return this->member < A.member;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.