Straight into business: I have code looking roughly like this:
char* assemble(int param)
{
char* result = \"Foo\" << doSomething(param) << \"bar\
"Foo"
and "bar"
have type char const[4]
. From the error message,
I gather that the expression doSomething(param)
has type char*
(which is suspicious—it's really exceptional to have a case where
a function can reasonably return a char*
). None of these types
support <<
.
You're dealing here with C style strings, which don't support
concatenation (at least not reasonably). In C++, the concatenation
operator on strings is +
, not <<
, and you need C++ strings for it to
work:
std::string result = std::string( "Foo" ) + doSomething( param ) + "bar";
(Once the first argument is an std::string
, implicit conversions will
spring into effect to convert the others.)
But I'd look at that doSomething
function. There's something wrong
with a function which returns char*
.