【问题标题】:class reference to istelf类对自身的引用
【发布时间】:2013-03-29 10:43:19
【问题描述】:

我的班级变得太大,应该分开。但是,理想情况下要拆分的类需要访问主类的变量。我正在尝试制作一个引用主类的模板类,但我似乎遇到了包含递归的问题。我搜索过,有人说你可以使用前向声明,但我仍然得到类型不完整的错误。我知道这是一个常见问题,并且我已经看到线程 Headers Including Each Other in C++ ,但似乎没有一个答案有意义或有效。

非常感谢任何帮助。

classmain.h

class classref;
class classmain
{
public:
    classmain()
:B(*this)
{};

 classref B;
 int a;
};

classref.h

#include "classmain.h"

class classref
{
public:
classref(classmain& ref)
    :A(ref)
{};

 classmain& A;
};

【问题讨论】:

  • 您正在创建一个必须解决的循环依赖项...
  • 你有你的前向声明并包括反向。

标签: c++ class recursion reference


【解决方案1】:

这是因为您将 classmain::B 声明为 classref 类的实例。然后它需要classref完整定义。

我建议您实际上在classref.h 文件中声明classmain,并在classmain.h 中包含classref.h。所以与你现在在声明和包含方面所做的相反。

【讨论】:

  • 您好,感谢您的回复。这行得通,但我现在不能从 classref 中访问 c​​lassmain 的成员变量?
  • 如果您将classmain 的实现放在包含2个标头的源文件中,则可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多