-4
我想學習C++,所以我爲這個愚蠢的問題表示歉意,如果我剛剛得到這個基本的東西,很多東西都會變得清晰......我遵循一個指南來創建一個鍵盤記錄器,用來教C++ 。但解釋是太弱,寫程序酷似指示,並嘗試調試後,我得到:這些錯誤消息告訴我什麼?
|=== Build: Debug in test (compiler: GNU GCC Compiler) ===| :\example\test\test\Timer.h|14|error: 'nullpointr' was not declared in this scope| :\example\test\test\Timer.h||In constructor 'Timer::Timer(const std::function<void()>&, const long unsigned int&, long int)':| :\example\test\test\Timer.h|44|error: no match for call to '(std::chrono::milliseconds {aka std::chrono::duration<long long int, std::ratio<1ll, 1000ll> >}) (std::chrono::milliseconds)'| :\example\test\test\Timer.h|45|error: expression cannot be used as a function| |=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
我爲我的第一個問題道歉不被構造良好的,但我不知道在哪裏因爲我完全缺乏經驗。我無法確定錯誤信息應該告訴我什麼,以及如何理解引用等,所以如果有人能夠解釋這些消息的不同含義,比如'nullpointr'未在此範圍內聲明,我將非常感激「...... I嘗試在已經提問和回答的地方找到答案,但是我不知道如何找到我需要的解釋。我想你只需要看看這個頭文件的代碼,因爲其他的錯誤是免費的......?它是(對於醜陋的代碼對不起,我複製的代碼有縮進「{」和「}」,但粘貼時它表現出他們大多一路左:
#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 = nullpointr;
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
如果有人可以幫助我我將非常感謝,謝謝。
這是'nullptr',不'nullpointr' :) – Rakete1111
如果你張貼在這裏,請確保您的代碼編譯 - 尤其是,#包括所有標題這將使它如此。 –
你正在編譯使用'g ++'或'gcc'嗎?當您使用C++語言時,喜歡使用'g ++'。 –