2013-10-28 3 views
0

메소드 log (string)를 사용하여 별도의 클래스로 실제 로거를 만듭니다.런타임에 함수가 호출되는 클래스의 이름

의 내가 3 개 수업을 가정 해 봅시다 : 을 - - B - 로거

I는 각각 A와 B 클래스의 로거 객체를 가질 것이다. Logger.log ("뭐든")를 할 것입니다.

로그에서 호출되는 클래스의 이름을 원합니다. 이것을 어떻게 찾을 수 있습니까? (여기에 "A"또는 "B"가됩니다)

가능하면 그냥 인수를 전달하지 않아도됩니다.

+2

Logger를 생성자의 클래스 이름으로 사용하고 나중에 사용할 수 있도록 저장하십시오. 두 클래스가 각각 자신의 이름으로'Logger' 멤버를 초기화하도록하십시오. –

+0

유일한 가능성이 있습니까? 나는 그것을 생각했지만 그렇게 할 수있는 더 깨끗한 방법이있을 수도있다. – dyesdyes

+0

유일한 가능성 인 것처럼 보이는대로 대답으로 변형시킬 수 있을까? – dyesdyes

답변

1

Logger은 생성자에서 클래스 이름을 가져 와서 나중에 사용하기 위해 저장하십시오. 두 클래스 각각 자신의 이름으로 Logger 회원을 초기화하십시오. 클래스 함수 호출이 같은

1

뭔가, 로그 당신에게 클래스와 기능을 제공합니다 : -

Logger.log(QString("%1::%2").arg(metaObject()->className()).arg(__func__)); 

클래스가 QObject를에서 파생된다고 가정.

관련 문제