"Foo"
и "bar"
имеют тип char const[4]
.Из сообщения об ошибке я понял, что выражение doSomething(param)
имеет тип char*
(что является подозрительным - действительно исключительный случай, когда функция может разумно вернуть char*
).Ни один из этих типов не поддерживает <<
.
Здесь вы имеете дело со строками в стиле C, которые не поддерживают конкатенацию (по крайней мере, не разумно).В C ++ оператор конкатенации в строках имеет вид +
, а не <<
, и для его работы необходимы строки C ++:
std::string result = std::string( "Foo" ) + doSomething( param ) + "bar";
(Если первый аргумент является std::string
, неявные преобразованиявступит в силу, чтобы преобразовать остальных.)
Но я бы посмотрел на эту doSomething
функцию.Что-то не так с функцией, которая возвращает char*
.