c++ A类包含B类指针,B类包含A类指针的情况

#include<stdio.h>

class Bclass;

class Aclass
{
public:
    friend Bclass;
    void func()
    {
        pB->funcB();
    }

    int data;
    Bclass* pB;
};


class Bclass
{
public:
    friend Aclass;
    void funcB()
    {
        p->func();
    }

    Aclass* p;
    int data;

};


int main()
{


    return 0;
}

编译结果:

1>------ 已启动生成: 项目: Abc, 配置: Debug Win32 ------
1> main.cpp
1>d:cpptestabcabcmain.cpp(13): error C2027: 使用了未定义类型“Bclass”
1> d:cpptestabcabcmain.cpp(5) : 参见“Bclass”的声明
1>d:cpptestabcabcmain.cpp(13): error C2227: “->funcB”的左边必须指向类/结构/联合/泛型类型

A类里面包含B类的指针,并且方法里面调用B类的方法,B类里面包含A类的指针,同样也调用A的方法,搞了半天没搞定

找来大神,说:你虽然申明了B类,但是,编译器只是知道有这个东西,并没有实现方法,要把分开,头文件一个,cpp一个

class Bclass;

class Aclass
{
public:
    friend Bclass;
    void func();

    int data;
    Bclass* pB;
};


class Bclass
{
public:
    friend Aclass;
    void funcA()
    {
        p->func();
    }

    Aclass* p;
    int data;

};

把实现放到cpp中

#include"Aclass.h"

void Aclass::func()
{
    pB->funcA();
}

完美解决。

启发c++写东西,还是要分开把类分在两个里面的,头文件一个,cpp一个

原文地址:https://www.cnblogs.com/dragon2012/p/4481217.html