我用一个函数创建了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>
相同。