目前我对前向声明和模板函数有一个令人沮丧的问题。我一直在尝试谷歌搜索并进行一些修改,但到目前为止没有任何效果。以下是代码片段:
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: error: forward declaration of 'struct TaskScheduler' ./bt-taskscheduler.h:229: error:不完整类型'struct TaskScheduler'的无效使用</p>
谁能告诉我这段代码出了什么问题?任何帮助表示赞赏..