При создании массива в c ++ вам нужно знать размер в compile_time. Когда это невозможно определить, оно не может его создать.
Возможным решением могло бы стать создание вашего массива в динамической памяти. Я рекомендую проверить http://www.cplusplus.com/reference/new/operator%20new []
Это позволит вам делать то, что вы хотите, но вы должны помнить, что впоследствии освобождаете память!
sizeof () не обязательна, так как вы можете просто сохранить количество элементов массива в отдельном значении и затем умножить его на sizeof (array [0])