2013-09-24 3 views
0

У меня есть этот код, который получает компилирует с помощью Sun Studio, но дает ошибку в г ++код компилируется на Sun Studio, но дает ошибку на НКУ

DBManager & DBManager::operator >> (UtlString &value) 
{ 
    //## begin DBManager::operator>>%921890065.body preserve=yes 
     if(_state == DBMRan){ 
       _reader >> static_cast<std::string>(value); 
     } 
     return *this; 
    //## end DBManager::operator>>%921890065.body 
} 

DBManager.cpp:263: error: no match for âoperator>>â in â((DBManager*)this)->DBManager::_reader >> std::basic_string<char, std::char_traits<char>, std::allocator<char> >(((const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)((const std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)(&((jda::UtlString*)value)->jda::UtlString::<anonymous>))))â 
DBReader.h:50: note: candidates are: virtual DBReader& DBReader::operator>>(char&) 
DBReader.h:51: note:     virtual DBReader& DBReader::operator>>(unsigned char&) 
DBReader.h:52: note:     virtual DBReader& DBReader::operator>>(short int&) 
DBReader.h:53: note:     virtual DBReader& DBReader::operator>>(short unsigned int&) 
DBReader.h:54: note:     virtual DBReader& DBReader::operator>>(int&) 
DBReader.h:55: note:     virtual DBReader& DBReader::operator>>(unsigned int&) 
DBReader.h:56: note:     virtual DBReader& DBReader::operator>>(long int&) 
DBReader.h:57: note:     virtual DBReader& DBReader::operator>>(long long int&) 
DBReader.h:58: note:     virtual DBReader& DBReader::operator>>(long unsigned int&) 
DBReader.h:59: note:     virtual DBReader& DBReader::operator>>(long long unsigned int&) 
DBReader.h:60: note:     virtual DBReader& DBReader::operator>>(float&) 
DBReader.h:61: note:     virtual DBReader& DBReader::operator>>(double&) 
DBReader.h:62: note:     virtual DBReader& DBReader::operator>>(DBDateTime&) 
DBReader.h:63: note:     virtual DBReader& DBReader::operator>>(DBBlob&) 
DBReader.h:64: note:     virtual DBReader& DBReader::operator>>(std::string&) 
DBReader.h:65: note:     virtual DBReader& DBReader::operator>>(DBNullIndicator&) 
otlv4.h:35416: note:     otl_connect& operator>>(otl_connect&, otl_stream&) 

Как вы можете видеть в выше сообщение об ошибке, что DBReader класс имеет оператор >> который принимает std :: string по ссылке, а класс UtlString - из std :: string, поэтому static_cast не должен быть проблемой, но все же компилятор жалуется, что нет соответствующего метода. Также может кто-нибудь сказать мне, как удалить â charachter, появляющийся в сообщении об ошибке.

Благодаря

+0

Я думаю, '' '' то, как ваша консоль отображает '' 'по какой-то причине ... И не следует ли ее отбрасывать на' std :: string & '? – lapk

+0

Я меняю static_cast на static_cast , но все тот же результат. – anonymous

ответ

2

Вы можете построить временную зЬй :: строку из UtlString.

std::string tmp(value);  
if(_state == DBMRan){  
    _reader >> tmp;  
}  

Это должно по крайней мере работать на обоих компиляторах.

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