相互关联的课程

时间:2015-08-28 09:40:12

标签: c++ visual-studio-2010

我有两个班:A和B. 我想:
- A类指向B
的指针 - B类可以访问A

的私人成员的方法

在尝试编译时,我得到了一个包含这样的十几个奇怪错误的列表:

  

"错误C2614:' A' :非法成员初始化:' b_ptr'不是基地或会员。"

如何消除它们?

总体情况:A类 - 它是一个大实体,B类 - 它是一个辅助类,分别读取输入文本文件和A类设置。这个OOD可能有问题吗?

" A.H":

#include "B.h"
class A
{
    // friend class B;
public:
    A() : b_ptr(new B(this)){};
private:
    int a_1;
    int a_2;
private:
    B* b_ptr;
};

" B.h":

#include "A.h"
class B
{
public:
    B(A*const a) : a_ptr(a) {};
private:
    A* const a_ptr;
};

1 个答案:

答案 0 :(得分:1)

您拥有头文件的循环依赖关系而不包含防护。

一种可能的解决方案

你的" B.h"只需要一个前瞻性声明。改为:

class A;

class B
{
public:
    B(A*const a) : a_ptr(a) {};
private:
    A* const a_ptr;
};