C++两个类相互调用

头文件都只声明对方是类(不知道细节),不包含对方头文件。这样能创建类指针。

cpp文件包含对方头文件,能用指针调用函数。

 

CA.h

复制代码
#pragma once

class CB;

class CA
{
public:
    CA(int a);

    void CallB();
    void printA();

    CB* pb;

private:
    int ma;


};
复制代码

 

CA.cpp

复制代码
#include "CA.h"

#include "CB.h"

#include <iostream>
using namespace std;

CA::CA(int a)
{
    ma = a;
    pb = nullptr;
}

void CA::printA()
{
    cout << "CA print  "<< ma << endl;
}

void CA::CallB()
{
    pb->printB();
}
复制代码

 

CB.h

复制代码
#pragma once

class CA;

class CB
{
public:
    CB(int b);
    void CallA();
    void printB();

    CA* pa;

private:
    int mb;
};
复制代码

 

CB.cpp

复制代码
#include "CB.h"


#include "CA.h"

#include <iostream>
using namespace std;

CB::CB(int b)
{
    mb = b;
    pa = nullptr;
}

void CB::printB()
{
    cout << "CB print  " << mb << endl;
}

void CB::CallA()
{
    pa->printA();
}
复制代码

 

CppTest.cpp

复制代码
#include "CA.h"
#include "CB.h"

#include <iostream>
using namespace std;

int main()
{
    CA ca(5);
    CB cb(7);

    ca.pb = &cb;
    cb.pa = &ca;

    ca.CallB();
    cb.CallA();


    int t;
    cin >> t;
    return t;
}
复制代码

 

posted @   冥府骑士格斯  阅读(148)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示