Да, то, что вы делаете, безопасно с учетом ваших определений, но я бы посоветовал объявить / определить вектор во время создания перечисления. Так что-то вроде:
enum QtMsgType { QtDebugMsg, QtInfoMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg };
QVector<QString> typeName = {"Debug", "Warning", "Critical", "Fatal", "Info"};
Это также совершенно ясно даст понять, что ваш вектор неверен! Обратите внимание, что у перечисления Debug, Info, Warning, ...
и ваш вектор Debug, Warning, Critical, ...
. Кроме того, нет смысла использовать изменяемый размер структуры, когда она является константой. Таким образом, вы можете просто иметь массив. Сложив все это вместе, выглядело бы так:
enum QtMsgType { QtDebugMsg, QtInfoMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg };
QString typeName[] = {"Debug", "Info", "Warning", "Critical", "Fatal"};
Другой вариант - перегрузить оператор <<
для потоков для вашего enum
, а затем вставить туда все логики c.
Для получения дополнительных опций взгляните на эту тему: Как преобразовать переменную типа enum в строку?