Я бы хотел сделать это:
MyClass mc = MyClass("Some string" << anotherString);
Спасибо за ваши ответы, я решил переписать этот вопрос, основываясь на том, что вы мне сказали, потому что он немного запутался. В конце концов, я прочитал макрос C ++ формата / inline ostringstream и решил использовать макрос, так как в действительности это невозможно сделать с помощью конструктора. Некоторые ответы мои больше не актуальны.
Теперь, что я могу сделать, это:
MY_CLASS("Some string" << anotherString << " more string!");
Использование этого макроса:
#include <sstream>
#define MY_CLASS(stream) \
MyClass( ( dynamic_cast<std::ostringstream &> ( \
std::ostringstream() . seekp( 0, std::ios_base::cur ) << stream ) \
) . str() )
Где конструктор MyClass принимает строку:
MyClass::MyClass(string s) { /* ... */ }