Макрос C ++ для получения текущего типа класса - PullRequest
0 голосов
/ 11 декабря 2018

Я использовал LOG_MACRO (..) в своем проекте, который я хочу обновить, чтобы он ничего не делал, если он используется в некоторых определенных классах.Я сделал это по шаблонной специализации.но я получаю ошибку компиляции в статических функциях.поскольку «this» там недоступно.

Мне нужен магический макрос, чтобы дать мне класс текущей функции-члена.если я использую его в статической функции, он должен дать void.

template<class T> struct ZZLogDisable { static constexpr bool Value = false; };

//this will give me compile error if used in static functions since this is not available there
#define LOG_MACRO(msg) if(!ZZLogDisable<std::remove_reference<decltype(*this)>::type>::Value) {  printf(msg); }
//disable logging for a class
#define DISABLE_LOG(Class) template<> struct ZZLogDisable<Class> { static constexpr bool Value = true; };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...