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 @ 2023-05-25 14:54  冥府骑士格斯  阅读(113)  评论(0编辑  收藏  举报