2011-08-08 3 views
1

Я пытаюсь выполнить этот код nmea2kml.cppошибка .cpp:. Не подходит для «оператора <» в «станд :: сегг <„Преобразование файла “"»

, но я получаю следующие ошибки также программа имеет параметры командной строки -f path Read file at given path (e.g. /some/where/nmea.txt) Что я должен изменить для запуска программы? Я получаю ошибку из-за проблемы с компилятором? coz Я испортил с добавлением cygwin, компиляторы MinGW для затмения! Я знаю, что программа верна. Другие использовали его и получили результаты. (http://julien.cayzac.name/code/gps/)

Ошибка

g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\nmea.o ..\src\nmea.cpp 
..\src\nmea.cpp: In function `int main(int, char**)': 
..\src\nmea.cpp:195: error: no match for 'operator<' in 'std::cerr < "Converting file \""' 
..\src\nmea.cpp:195: note: candidates are: operator<(const char*, const char*) <built-in> 
..\src\nmea.cpp:195: note:     operator<(void*, void*) <built-in> 
..\src\nmea.cpp:336: error: no match for 'operator<' in 'std::cout < "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"' 
..\src\nmea.cpp:336: note: candidates are: operator<(const char*, const char*) <built-in> 
..\src\nmea.cpp:336: note:     operator<(void*, void*) <built-in> 
..\src\nmea.cpp:336: error: `std::endl(std::basic_ostream<_CharT, _Traits>&)' cannot appear in a constant-expression 
..\src\nmea.cpp:355: error: parse error in template argument list 
..\src\nmea.cpp:336: error: `endl<<expression error> >' cannot appear in a constant-expression 
..\src\nmea.cpp:406: error: parse error in template argument list 
..\src\nmea.cpp:336: error: `endl<<expression error> >' cannot appear in a constant-expression 
..\src\nmea.cpp:406: error: parse error in template argument list 
..\src\nmea.cpp:336: error: `endl<<expression error> >' cannot appear in a constant-expression 
..\src\nmea.cpp:406: error: parse error in template argument list 
..\src\nmea.cpp:406: error: expected `;' before '}' token 
..\src\nmea.cpp:193: warning: unused variable 'outfile' 
Build error occurred, build is stopped 

ответ

3

Похоже, вы написали std::cerr < "..." (оператор <), где вы намеревались написать std::cerr << "..." (оператор <<).

+0

Я попробовал! но он показывает .. В функции 'int main (int, char **) ': | Ошибка: нет соответствия для 'operator <' in 'std :: operator << [с _Traits = std :: char_traits ] (((std :: basic_ostream > &) (+ (+ std :: operator << [с _Traits = std :: char_traits ] (((std :: basic_ostream > &) (+ (+ std :: operator << [с _Traits = std: : char_traits ] ..main.cpp | 347 | error: 'filename 'не может отображаться в константном выражении | ..main.cpp | 347 | error:' std :: endl (std :: basic_ostream <_CharT, _Traits> &) 'не может появиться в постоянном выражении – emil

+0

да! Решено сейчас! Большое спасибо! – emil

1

Попробуйте использовать сдвиг бит «< <» вместо меньше, чем оператор «<» с ostreams:

std::cerr << "Converting file \""; 
+0

Разве это не оператор ввода-вывода? :-) –

+1

Вы действительно не должны ссылаться на «<< «как« бит-сдвиг » –

+0

Фактически оператор« бит-сдвиг »_exactly_ что это за оператор «IO». В контексте соглашения на C++ операторы бит-сдвига перегружены и используются (и злоупотребляются) с файлом/вводом/выводом/etc. потоки. Вы правы, заявляя, однако, что мне сложно использовать этот термин у кого-то, незнакомого с языком. – sirbrialliance

1

Нет, код, как показано не является правильным. Вы выполняете вывод с std::cout << ..., а не std::cout < .... Вероятно, некоторые преобразования HTML испортили его.

+0

спасибо за помощь! Я заменил <на << и это сработало! – emil

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

  • Нет связанных вопросов^_^