目前我有一個令人沮喪的問題,正向聲明和模板函數。我一直在嘗試使用Google進行修改,但目前爲止沒有任何工作。下面的代碼片段:正向聲明和模板函數錯誤
class TaskScheduler; --> //forward declaration of ‘struct TaskScheduler’
//
//
class TaskEvent {
//
//
};
class HostTask {
//
//
};
template<class T> inline HostTask*
findT(TaskScheduler* tss, T* e)
{
map<int, HostTask*>::iterator it;
bool bEq = false;
for(it = tss->tasks_.begin(); it != tss->tasks_.end(); it++) { --> //error: invalid use of incomplete type ‘struct TaskScheduler’
if(dynamic_cast<TaskEvent*>(e))
bEq = dynamic_cast<TaskEvent*>(e)->equal(it->second->ev_);
else if(dynamic_cast<HostTask*>(e))
bEq = dynamic_cast<HostTask*>(e)->equal(it->second);
if(bEq) {
return it->second;
}
}
return NULL;
}
//
//class TaskScheduler definition
class TaskScheduler : virtual public HCIEventsHandler {
friend HostTask* findT<TaskEvent>(TaskScheduler* tss, TaskEvent* e); //findT function is used here
//
//
};
這裏是一個在代碼中顯示爲好,我已經得到了錯誤消息: ./bt-taskscheduler.h:159:錯誤:向前聲明'struct TaskScheduler' ./bt-taskscheduler.h:229:error:invalid use of incomplete type'struct TaskScheduler'
有人能告訴我這段代碼出了什麼問題嗎?任何幫助表示讚賞..
確實這個代碼與一些編譯器一起工作..無論如何,謝謝大家的回答..基本上我需要轉發聲明findT模板函數並解決我的代碼結構..謝謝你們.. – bayu 2009-08-12 07:49:49