메타 객체 시스템
Meta-object System메타 객체 시스템(Meta Object System)은 객체 간 통신, 런타임 유형 정보, 동적 속성 시스템 등의 신호/슬롯과 같은 C++로의 Qt 확장을 지원하기 위해 제공되는 Qt 프레임워크 코어의 일부다.[1]
건축
메타 오브젝트 시스템은 QOBject 클래스, Q_OBLE 매크로, moc(Meta-Object Compiler)라는 툴의 3가지로 구성된다. QOBject는 모든 Qt 클래스의 기본 클래스, Q_OBULT 매크로는 클래스에서 메타 객체 기능을 활성화하는 데 사용되며, 마지막으로 moc는 Q_OBULT 매크로 인스턴스를 C++ 소스 코드로 변경하여 사용하는 클래스에서 메타 객체 시스템 메커니즘을 활성화하는 전처리장치다.[2]
메타 객체 시스템을 사용하는 것은 약간의 비판을 가져왔다. Qt 문서에서는 코드 생성의 이점, GUI의 역동성, 스크립팅 언어에 대한 자동 바인딩, moc를 이용한 신호/슬롯 구현에 있어서의 제한 및 합리적인 성능 등 메타 객체 시스템의 사용에 관한 몇 가지 이유가 제시되었다.[3] Qt를 전처리가 아닌 것으로 만들려는 노력이 있다. 이러한 노력에는 libclang을 이용한 Qt moc 재실행 등이 포함된다.[4]
참조
- ^ "The Meta-Object System - QtCore 5.1". Qt Project. 2013-07-04. Retrieved 2013-07-04.
- ^ "Using the Meta-Object Compiler (moc)". Qt Project. 2013-07-04. Retrieved 2013-07-04.
- ^ "Why Does Qt Use Moc for Signals and Slots?". Qt Project. 2013-07-04. Retrieved 2013-07-04.
- ^ "Re-implementing Qt moc using libclang". Olivier Goffart. 2013-07-04. Retrieved 2013-07-04.