Я пытаюсь написать библиотеку журнала, который будет использовать внешний инструментC перечисления # стиля в C++
Я ищу удобный способ добавить ключ-строку в выходном поток, чтобы помочь разбору внешнего инструмента в то время как имеющие наименьшее влияние на программиста, используя библиотеку
цель заключается в достигнутом что-то вроде этого:
cout << DEBUG::VERBOSE << "A should equal 3" << endl;
cout << DEBUG::WARNING << "something went wrong" << endl;
сейчас я структурированы мои данные следующим образом
struct Debug
{
static const std::string FATAL_ERROR;
static const std::string ERROR;
static const std::string WARNING;
static const std::string IMPORTANT;
static const std::string INFORMATION;
static const std::string VERBOSE;
static const std::string DEBUG;
};
Это работает найти, но я хотел бы добавить уровень абстракции от std::string
.
В Java/C# я мог бы использовать enum
для достижения поведения записи, как я могу реализовать это на C++ элегантно.
Избегайте статические переменная не-POD типов (станд :: строка включена). Хотя теперь они могут работать, вы можете столкнуться с кошмаром статической проблемы с инициализацией позже. –
, что было частью цели этого вопроса :) – tiridactil