gpt4 book ai didi

c++ - 没有构造函数 "std::thread::thread"的实例与参数列表匹配

转载 作者:行者123 更新时间:2023-11-30 02:20:37 26 4
gpt4 key购买 nike

<分区>

Error (active) E0289 no instance of constructor "std::thread::thread" matches the argument list

#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);// <- There is an error
else
this->ThreadFunc();
}
void Stop()
{
Alive = false;
Thread.join();
}
void SetFunction(const std::function<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 // !TIMER_H

Severity Code Description Project File Line Suppression State Error C3867 'Timer::ThreadFunc': non-standard syntax; use '&' to create a pointer to member 53

第53行错误

谁能解释一下这个错误是什么意思?

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