C ++宏以获取当前的类类型

时间:2018-12-11 07:53:21

标签: c++ templates

我在项目中使用了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; };

0 个答案:

没有答案