ошибка: указан конфликтующий тип возврата, отличный от обычного - PullRequest
2 голосов
/ 05 декабря 2011

Я студент информатики. Я знаю, что «указанный конфликтующий тип возврата» обычно означает, что вы используете функцию до ее объявления, но эта функция немного отличается. Из-за строгих правил назначения я реализую планировщик задач (наш собственный многопоточный) и в одном классе под названием 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()’

Есть идеи, как я могу заставить это перестать происходить?

1 Ответ

3 голосов
/ 05 декабря 2011

Проблема в том, что 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...