То как вы хотите определить массив называется VLA (массив переменной длины).
Эта шутка появилась только в C99 и выше. В С++ их нет.
Но даже и в программах на Си не все компиляторы их поддерживают, например в MSVC, по моему, до сих пор не реализовано. Правда микрософт и не заявляет о полной поддержке стандартов Си.
Так что в С++, как уже было сказано в комментариях, используйте либо динамические массивы, либо std::vector.