C++ Visual Studio считает, что объявление vector является прототипом функции

Хотел добавить в созданный класс двумерный vector:

std::vector<std::vector<char>> room((currentRoomLength), std::vector<char>(currentRoomWidth));

Но сразу появляется куча ошибок сообщающих о том, что я неправильно объявил "функцию". Что я делаю не так?


Ответы (1 шт):

Автор решения: KoVadim

Известная "особенность с++". https://en.wikipedia.org/wiki/Most_vexing_parse

"если что то выглядит как объявление функции, то это и есть объявление функции".

Если Вы пишите на с++11 и старше (а это нормально в наши дни, тем более Вы написали две угловые скобки подряд!), используйте чуточку фигурных скобок

std::vector<std::vector<char>> room{(currentRoomLength), std::vector<char>(currentRoomWidth)};

либо можно добавить лишние круглые скобки

std::vector<std::vector<char>> room(((currentRoomLength), std::vector<char>(currentRoomWidth)));
→ Ссылка