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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.