错误:指定的返回类型冲突,与平时不同
Posted
技术标签:
【中文标题】错误:指定的返回类型冲突,与平时不同【英文标题】:error: conflicting return type specified, different than usual 【发布时间】:2011-12-04 23:41:35 【问题描述】:我是一名计算机科学专业的学生。我知道“指定的冲突返回类型”通常意味着您在声明之前使用了一个函数,但这个有点不同。由于严格的分配准则,我正在实现一个任务调度程序(我们自己的多线程),并在一个名为 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()’
有什么办法可以让这种情况停止发生吗?
【问题讨论】:
实际错误发生在哪一行?你能粘贴真正的错误信息,而不是它的概要吗?Task
和Schedulable
是什么关系?如果Task
继承自Schedulable
,那么你有两个Start
s 返回类型冲突,这当然是一个错误。原因是如果你有一个Schedulable
的对象并调用它的Start
编译器会感到困惑。
你能发布实际的错误吗?
@Shahbaz:我敢打赌你是对的;您应该将其发布为答案。 (虽然我假设Schedulable
继承自Task
,而不是相反。)
哎呀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()’
【参考方案1】:
问题在于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;
【讨论】:
好吧,我想它会归结为,我们被指示不要更改头文件,除非我们可以证明这样做的充分理由,所以我只是确保没有其他选择。谢谢,非常感谢!以上是关于错误:指定的返回类型冲突,与平时不同的主要内容,如果未能解决你的问题,请参考以下文章
致命错误 LNK1112:模块机器类型“X86”与 2010 的目标机器类型“x64”冲突
当我使用日期类型变量而不是硬编码日期时,为啥会出现“操作数类型冲突:日期与 int 不兼容”错误?
错误:列“DOB”的类型与UNPIVOT列表中指定的其他列的类型冲突
麻烦构建旧版本的 SIP:致命错误 LNK1112:模块机器类型“x64”与目标机器类型“X86”冲突
错误: ADODB.Command (0x800A0BB9) 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突