gpt4 book ai didi

c++ - 如何在 C++ 中跨实例调用方法

转载 作者:行者123 更新时间:2023-11-30 03:32:37 24 4
gpt4 key购买 nike

我有两个机器人类实例。当我运行某些方法(例如,go())时,我希望每个实例都go,如果它的频率正确的话。示例(为简单起见,所有内容都在一个文件中):

class Robot {
int freqency_from;
int freqency_to;
bool is_going = false;

bool isOnFrequency(int frequency) {
return (frequency >= frequency_from && frequency <= frequency_to);
}

public:
Robot(int _freqency_from , int _freqency_to) {
freqency_from = _freqency_from;
freqency_to = _freqency_to;
}

void go(int frequency) {
if (isOnFrequency(frequency)) {
is_going = true;
}
}

bool isGoing() {
return is_going;
}
};

int main() {
Robot robot1 = Robot(1, 3);
Robot robot2 = Robot(3, 5);

cout << robot1.isGoing(); // false
cout << robot2.isGoing(); // false

Robot::go(1); // should be run for each and every instance of the Robot class

cout << robot1.isGoing(); // true
cout << robot2.isGoing(); // false

return 0;
}

如何使这个伪代码起作用?甚至可以不制作 Robot 的所有实例的 vector 并在其上进行映射吗?

最佳答案

常规的旧循环怎么样?只需将您的机器人存储在容器中并对其进行迭代即可。

vector<Robot> robots;    
robots.emplace_back(1, 3);
robots.emplace_back(3, 5);

for (auto& robot : robots)
{
cout << robot.isGoing();
robot.go(1);
cout << robot.isGoing();
}

关于c++ - 如何在 C++ 中跨实例调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com