Task
的类中,在Task.h
我们有:
void Task::Start(){
int * returnval = new int;
*returnval = pthread_create(&thread_id,NULL,tfunc,this);
delete returnval;
}
然后在另一个文件schedulable.h
中,我们有:
int Schedulable::Start(){
try{
Task::Start();
return 0;
}catch(int e) { return 1; }
}
当我编译它时,我有一个“冲突的返回类型”错误:
In file included from scheduler.H:59, from task_test_step2.cpp:9: schedulable.H:162: error: conflicting return type specified for ‘virtual int Schedulable::Start()’ task.h:157: error: overriding ‘virtual void Task::Start()’
我有什么想法可以让它停止发生?
答案 0 :(得分:3)
问题在于Schedulable::Start
会覆盖Task::Start
并将返回类型从void
更改为int
。你可能想让Task::Start
返回一个int:
int Task::Start(){
// no need to use new here!
int returnval = pthread_create(&thread_id,NULL,tfunc,this);
return returnval;
}