Здесь есть 2 проблемы, сначала вам не хватает main
, поэтому этот код недействителен на верхнем уровне (например, внешний main/functions/etc). Когда вы компилируете свою программу, компилятор ищет main, а затем начинает выполнение кода с этого момента. Есть несколько вещей, которые разрешены до основного, но это выражение не является одним из них. Причина в том, что вы пытаетесь вычислить что-то, но поток программ никогда не идет туда, поэтому как компилятор может решить, когда выполнять этот код? Важно, какой порядок, который происходит в и перед основным, не определен. Это утверждение не является побочным эффектом, так что сообщение об ошибке, о котором вы писали, жалуется. Компилятор ищет основную информацию, так как в этом случае код начнет выполняться, поэтому вы хотите поместить свой код в основном по этой причине (я знаю, что это больше для этого, и это не на 100% точно, но я думаю, что это хорошая отправная точка/эвристика для новых программистов, чтобы лучше понять). Возможно, вы захотите прочитать этот вопрос. Is main() really start of a C++ program?
Во-вторых, существует проблема с пространствами имен. ostringstream
находится в пространстве имен std
, вместо этого попробуйте std::ostringstream
. Ситуация с string
аналогична, для этого используется std::string
.
С учетом этих изменений код будет в конечном итоге выглядеть примерно так:
int main(){
int num = 1;
std::ostringstream convert;
convert << num; //This isn't allowed outside of main
std::string str = convert.str();
std::cout << str;
return 0;
}
Do не у вас есть 'основной()' функцию? (+1 для обеспечения небольшого примера кода, который позволяет нам воспроизвести ошибку!) – moooeeeep
Ох, вот и все. Приветствия. –
Есть ли код, который не требует main()? –