我有一些unmanged代碼移植到VC100中。我正在嘗試使用定時器以間隔模式運行成員函數。這個類正在使用設計模式私有類數據。我不確定如何設置回撥。我曾嘗試如何發送私有數據類的成員函數作爲C++中的線程的回調非託管?
class IProcessable {
public:
virtual void process() throw() = 0;
protected:
IProcessable() throw() {}
virtual ~IProcessable() throw() {}
};
class Processor::Private {
private:
IProcessable & mProcessable;
public:
Private(IProcessable & processable,
unsigned int interval_ms) throw() :
mProcessable(processable)
{
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)(this->callTimer), 0, 0, NULL);
// I want to send the callTimer to be called at the interval..
onTimer();
}
__fastcall ~Private() throw() {
}
void callTimer()
{
mProcessable.process();
}
private:
void __fastcall onTimer() {
mProcessable.process();
}
};
Processor::Processor(IProcessable & processable, unsigned int interval_ms) throw() :
mPrivate(new Private(processable, interval_ms)) {}
Processor::~Processor() throw() {
delete mPrivate;
}
}
錯誤C2440: '類型轉換':無法從 '重載函數' 到 'LPTHREAD_START_ROUTINE' 轉換
如果您使用的是vc100,請使用'noexcept'而不是'throw()'。 – kfsone