首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >圆形属地?

圆形属地?
EN

Stack Overflow用户
提问于 2013-11-25 22:58:00
回答 1查看 830关注 0票数 0

好的,我理解前向声明,但是在这种情况下,我需要在两端调用成员/字段,所以我不能使用它。我试图覆盖.cpp文件中的声明(包括我需要使用的类的实际头),但是当我试图使用它时,我通过前向声明在标头中定义的指针被打破了。

我怎么才能避开这一切?你需要密码吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-25 23:08:05

您需要记住,形成指向类的指针只需要该类的声明,而访问该类的成员则需要它的定义。因此,要解决循环依赖关系,可以这样做:

A.hpp

代码语言:javascript
复制
class B;

class A
{
public:
  int foo(B *b);
  int bar();
};

B.hpp

代码语言:javascript
复制
class A;

class B
{
  A *m_a;
public:
  int foo();
  explicit B(A *a) : m_a(a) {}
};

A.cpp

代码语言:javascript
复制
#include "A.hpp"
#include "B.hpp"

int A::foo(B *b)
{
  return 2 * b->foo();
}

int A::bar()
{
  return 42;
}

B.cpp

代码语言:javascript
复制
#include "A.hpp"
#include "B.hpp"

int B::foo()
{
  return m_a->bar();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20205215

复制
相关文章

相似问题

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