Я изучаю C++ со вчерашнего дня, и я хотел бы закодировать систему сигнализации, которая позволяет пользователю устанавливать свои собственные сигналы тревоги с объектом Alarm
. Я пытаюсь работать сам по себе, но только позволяет пользователю запустить его: если я попытаюсь использовать метод start
для запуска второго аварийного сигнала, программа ожидает, что первый сигнал «звонит», чтобы запустить второй.Выполнять объекты одного и того же класса одновременно
Как я могу запустить два будильника одновременно? Спасибо, что нашли время, читая это. (OSX Sierra, Xcode 8,2)
main.cpp
using namespace std;
int main(int argc, const char * argv[]) {
Alarm test(12, 12, "foo");
test.start();
Alarm.hpp
class Alarm {
public:
Alarm(int hour, int minute, std::string speech);
void start();
void stop();
bool isStopped() const;
std::string getStats() const;
private:
int m_hour;
int m_minute;
std::string m_speech;
bool m_stopped;
};
Alarm.cpp
using namespace std;
Alarm::Alarm(int hour, int minute, string speech) {
m_hour = hour;
m_minute = minute;
m_speech = speech;
m_stopped = false;
}
void Alarm::start() {
int currentHour, currentMinute;
while (!Alarm::isStopped()) {
time_t now = time(NULL);
struct tm *current = localtime(&now);
currentHour = current->tm_hour;
currentMinute = current->tm_min;
if (currentHour == m_hour && currentMinute == m_minute) {
cout << m_speech << endl;
m_stopped = true;
}
else {
this_thread::sleep_for(chrono::milliseconds(60000));
}
}
}
void Alarm::stop() {
m_stopped = true;
}
bool Alarm::isStopped() const {
return m_stopped;
}
Похоже, вам нужно узнать многопоточность. – NathanOliver
Вместо случайных «обучающих программ» в Интернете ** изучайте язык из книги **. –
Вот список некоторых [C++ книг] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). –