c++获取函数调用方类名



我用一个函数创建了singleton类"log";,所以它可以从任何其他类调用。当有人调用log((时,我想知道调用者的类名。

template<typename T>
void log(LogLevelType logLevel, const char* format, ... );

template<typename T>
inline void Logger::log(LogLevelType logLevel, const char * format, ... )
{
std::string className = typeid(T).name();
}

这是有效的,但我仍然不满意你调用这个函数的方式:

Logger::get()->log<MyClass>(LOG_INFO, "Registering function %s successful.", "blub");

我可以让它更通用吗,例如

log<this*>

而不是

log<MyClass>

可以,但需要使用decltype:

假设this是指向MyClass的实例的指针,则log<decltype(*this)>log<MyClass>相同。

最新更新