繁体   English   中英

C ++构造相互依赖

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM