我有一個類Robot的兩個實例。當我運行的一些方法(比如,go()
)我希望每一個實例去如果是在一個正確的頻率。示例(爲了簡單起見,所有內容都在一個文件中):如何在C++中的實例中調用方法
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的所有實例的矢量並映射它,甚至有可能嗎?
你可能會有一個指向現有實例的靜態成員向量,並使'go'方法也是靜態的。但我不認爲這是一個好設計。 – Corristo
這是走向靜態/「單身」的領土,似乎對我來說是一種代碼味道。在這種情況下,如果每個「機器人」都應該做的事情,那麼你應該有一種'RobotManager',它可以讓它們集合起來完成各種任務。該商業邏輯不應該在「Robot」類中。 – CoryKramer
@CoryKramer [我要給它.. SomethingManager(https://blog.codinghorror.com/i-shall-call-it-somethingmanager/) –