-1
こんにちは皆、すべてがうまくいくことを願っています。私はC++のスレッドで作業しようとしています。私はコードをコンパイルし、次のエラーメッセージを受け取りました。スレッドで作業しようとするとエラーが発生する
C:\Users\Peretz\Documents\keylogger\KeyConstants.h|183|warning: unknown escape sequence: '\|' [enabled by default]|
C:\Users\Peretz\Documents\keylogger\Timer.h|10|error: 'thread' in namespace 'std' does not name a type|
C:\Users\Peretz\Documents\keylogger\Timer.h||In member function 'void Timer::SleepAndRun()':|
C:\Users\Peretz\Documents\keylogger\Timer.h|25|error: 'std::this_thread' has not been declared|
C:\Users\Peretz\Documents\keylogger\Timer.h||In member function 'void Timer::Start(bool)':|
C:\Users\Peretz\Documents\keylogger\Timer.h|71|error: 'Thread' was not declared in this scope|
C:\Users\Peretz\Documents\keylogger\Timer.h|71|error: 'thread' is not a member of 'std'|
C:\Users\Peretz\Documents\keylogger\Timer.h||In member function 'void Timer::Stop()':|
C:\Users\Peretz\Documents\keylogger\Timer.h|82|error: 'Thread' was not declared in this scope|
||=== Build failed: 5 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
私はYoutubeでC++のスレッドとC++ 11のスレッドを調べましたが、答えが見つかりませんでした。なぜこれらのエラーがあるのか説明してください。
#ifndef TIMER_H
#define TIMER_H
#include <thread>
#include <chrono>
class Timer
{
std::thread Thread;
bool Alive = false;
long CallNumber = -1L;
long repeat_count = -1L;
std::chrono::milliseconds interval = std::chrono::milliseconds(0);
std::function<void(void)> funct = nullptr;
void SleepAndRun()
{
std::this_thread::sleep_for(interval);
if (Alive)
{
Function()();
}
}
void ThreadFunc()
{
if (CallNumber == Infinite)
while (Alive)
SleepAndRun();
else
while (repeat_count--)
SleepAndRun();
}
public:
static const long Infinite = -1L;
Timer() {}
Timer(const std::function<void(void)> &f) : funct (f) {}
Timer(const std::function<void(void)> &f,
const unsigned long &i,
const long repeat = Timer::Infinite) : funct (f),
interval (std::chrono::milliseconds(i)), CallNumber (repeat) {}
void Start (bool Async = true)
{
if (IsAlive())
return;
Alive = true;
repeat_count = CallNumber;
if (Async)
Thread = std::thread (ThreadFunc,this);
else
this->ThreadFunc();
}
void Stop()
{
Alive = false;
Thread.join();
}
void SetFunction (const std::function<void (void)> &f)
{
funct = f;
}
bool IsAlive() const
{
return Alive;
}
void RepeatCount (const long r)
{
if (Alive)
return;
CallNumber = r;
}
long GetLeftCount() const
{
return repeat_count;
}
long RepeatCount() const
{
return CallNumber;
}
void SetInterval (const unsigned long &i)
{
if (Alive)
return;
interval = std::chrono::milliseconds(i);
}
unsigned long Interval() const
{
return interval.count();
}
const std::function<void(void)> &Function() const
{
return funct;
}
};
#endif
ありがとうございました。あなたが使用しているどのコンパイラ
コンパイラでC++ 11をオンにしましたか? – NathanOliver
これを実行するコマンドは? ... – amanuel2
また、 'std :: function'をサポートするために' #include 'を追加してください。 –