当然可以,我们可以使用面向对象编程的思想来实现这个需求。假设我们有一个名为 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);
}
在这个示例中,我们有两个类 SpiderMan 和 SpiderWebShooter。SpiderWebShooter 类有一个名为 shootWeb 的成员函数,它接受一个字符串向量作为参数,并打印出将网射向每个目标的消息。
在 SpiderMan 类中,有一个名为 fight 的成员函数,它也接受一个字符串向量作为参数,表示蜘蛛侠需要对付的敌人。在 fight 函数中,蜘蛛侠首先判断每个敌人是否危险,如果是,就将它们添加到一个新的向量 targets 中。然后,SpiderMan 类调用 SpiderWebShooter 类的 shootWeb 成员函数,将 targets 向量作为参数传递过去。
这样,在一个类中就可以调用另一个类的成员函数了。在这个例子中,SpiderMan 类调用了 SpiderWebShooter 类的 shootWeb 函数。