LINUX.ORG.RU

C++ synthesized method first required here


0

0
stringstream Team::parse_ws(string str){
stringstream stream(str);
return stream;
}

stringstream stream(parse_ws(buff));

include/team.cpp: In member function ‘std::stringstream Team::parse_ws(std::string)’:
include/team.cpp:8: note: synthesized method &#8216;std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream(const std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&)&#8217; first required here


Что компилятор от меня хочет?
★★★★
а что еще пишет?

судя по тому что написано,
g++ не может синтезировать конструктор копии для std::stringstream,
это может быть например потому, что что-нибудь объявлено private.
fghj ★★★★★
()
Потому что потоки нельзя копировать - конструктор копирования является закрытым в одном из базоывх классов.
Begemoth ★★★★★
()
Функция теперь возвращает stream.str() и всё работает. Единственное, мучает вопрос, не накладно ли столько преобразований типов?

string -> stringstream -> string -> stringstream
Selecter ★★★★
() автор топика
Можно сделать примерно так:

void parse_ws(stringstream &stream, const string str) { stream << str; }

stringstream stream; parse_ws(stream, buff);

Тогда компирований не будет.

Legioner ★★★★★
()
Ответ на: комментарий от Selecter
Можно воспользоваться умным указателем
anonymous
()
Ответ на: комментарий от aton
Ага.

Вот что не люблю в С++ - можно забыть & поставить и всё будет работать так же, за исключением маленькой, но досадной потери производительности.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.