현재 로깅 라이브러리에 몇 가지 기능을 추가하고 있습니다. 이들 중 하나는 클래스 내에서 로그 메시지를 작성하기 위해 자동으로 미리 준비된 클래스의 모듈 이름을 선언 할 수있는 가능성입니다. 그러나 module-name이 제공되지 않으면 아무 것도 붙지 않습니다. 현재 이름을 반환하는 정적 함수가있는 trait-class를 사용하고 있습니다.로깅을위한 클래스의 모듈 이름을 선언하십시오.
template< class T >
struct ModuleNameTrait {
static std::string Value() { return ""; }
};
template< >
struct ModuleNameTrait<Foo> {
static std::string Value() { return "Foo"; }
};
이 클래스는 도우미 매크로를 사용하여 정의 할 수 있습니다. 단점은 모듈 이름을 클래스 외부에서 선언해야한다는 것입니다. 나는 이것이 수업 시간에 가능하기를 바란다. 또한 전 처리기 지시문을 사용하여 모든 로깅 코드를 제거 할 수 있기를 원합니다. SFINAE를 사용하면 템플릿 인수에 특정 멤버가 있는지 확인할 수 있지만 다른 사람들 (템플릿을 친숙하지 못함)으로 인해 코드를 유지 관리해야하므로 훨씬 간단한 솔루션을 찾고 있습니다. 아무도 없다면 나는 특성 접근법을 고수 할 것이다.
미리 감사드립니다.
이 완벽! 때로는 나무 숲이 보이지 않는데, 나는 복잡하게 생각하고있었습니다. 고맙습니다! –
나는 그 문제를 안다 : –