2013-05-03 3 views
1

У меня есть этот код, который я пытаюсь скомпилировать на Linux с G++-4.7:Нет функции согласования ошибок

TermToGeneCount *tg = new TermToGeneCount(); 
TermToGeneCount *tgn = new TermToGeneCount(); 
Dag<int64_t>* dags = new Dag<int64_t>(); 
//.... 
getTermToGeneCount(nwPar.getAnnotationRetriever(),dags,tg,tgn); 

Если getTermToGeneCount определяется в том же пространстве имен, как:

void DefaultNwBuilder::getTermToGeneCount(const JavaWrapping::javaAnnotationRetrieverWrapper& annRetriever, Dag<int64_t>* dags, TermToGeneCount* tg, TermToGeneCount* tgn) const{ 
    //.. 
    } 

Когда я compile Я получаю эту ошибку:

error: no matching function for call to ‘cnw::DefaultNwBuilder::getTermToGeneCount(const JavaWrapping::javaAnnotationRetrieverWrapper&, Dag<long int>*&, TermToGeneCount*&, TermToGeneCount*&)’ 
note: candidates are: 

Я думаю, что проблема в том, со вторым параметром, потому что, если я его удалю (как из вызова, так и из определения метода), он работает.

Не могли бы Вы помочь мне?

+2

Можете ли вы показать сообщение об ошибке _complete_ и _unedited_? Какие кандидаты существуют? –

+1

Является ли вызов getTermToGeneCount методом в DefaultNwBuilder? –

+0

Никаких кандидатов не было предоставлено, из сообщения об ошибке я только что удалил имя файла и номера строк. @MikeP да, есть. – Aslan986

ответ

2

Возможно, проблема с 32-разрядной или 64-разрядной платформой. long int в ошибке не обязательно отображается на int64_t ...

+1

Это была бы ошибка компоновщика, не так ли? Я сомневаюсь, что это проявилось бы на этапе компиляции. – trojanfoe

+0

Кроме того, gcc заменяет 'int64_t' типом typedef'd в сообщении об ошибке - см. Http://ideone.com/5ry6F0 –

+0

С другой стороны, OP упоминает, что он работает, когда параметр, содержащий' int64_t', удаляется ... –

Смежные вопросы