在C++中,如何在一个类中调用另一个类的成员函数

201 阅读1分钟

当然可以,我们可以使用面向对象编程的思想来实现这个需求。假设我们有一个名为 SpiderMan 的类和一个名为 SpiderWebShooter 的类,SpiderMan 类可以调用 SpiderWebShooter 类的成员函数。

// SpiderWebShooter.h
#pragma once
#include <vector>

class SpiderWebShooter
{
public:
    void shootWeb(const std::vector<std::string>& targets);
};

// SpiderWebShooter.cpp
#include "SpiderWebShooter.h"
#include <iostream>

void SpiderWebShooter::shootWeb(const std::vector<std::string>& targets)
{
    for (const auto& target : targets)
    {
        std::cout << "发射蜘蛛网到 " << target << std::endl;
    }
}

// SpiderMan.h
#pragma once
#include <vector>
#include <string>
#include "SpiderWebShooter.h"

class SpiderMan
{
private:
    SpiderWebShooter webShooter;

public:
    void fight(const std::vector<std::string>& enemies);
};

// SpiderMan.cpp
#include "SpiderMan.h"

void SpiderMan::fight(const std::vector<std::string>& enemies)
{
    std::vector<std::string> targets;
    for (const auto& enemy : enemies)
    {
        if (isEnemyDangerous(enemy))
        {
            targets.push_back(enemy);
        }
    }
    webShooter.shootWeb(targets);
}

在这个示例中,我们有两个类 SpiderManSpiderWebShooterSpiderWebShooter 类有一个名为 shootWeb 的成员函数,它接受一个字符串向量作为参数,并打印出将网射向每个目标的消息。

SpiderMan 类中,有一个名为 fight 的成员函数,它也接受一个字符串向量作为参数,表示蜘蛛侠需要对付的敌人。在 fight 函数中,蜘蛛侠首先判断每个敌人是否危险,如果是,就将它们添加到一个新的向量 targets 中。然后,SpiderMan 类调用 SpiderWebShooter 类的 shootWeb 成员函数,将 targets 向量作为参数传递过去。

这样,在一个类中就可以调用另一个类的成员函数了。在这个例子中,SpiderMan 类调用了 SpiderWebShooter 类的 shootWeb 函数。