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:\cpptest\abc\abc\main.cpp(13): error C2027: 使用了未定义类型“Bclass”
1> d:\cpptest\abc\abc\main.cpp(5) : 参见“Bclass”的声明
1>d:\cpptest\abc\abc\main.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一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值