Intel의 PCSDK에서 작업하고 있는데, 추상 클래스의 생성자가 무시되는 샘플에서 구문 적으로 이해할 수없는 부분이 있습니다. 특히,이 라인 :C++ 재정의 구문
GesturePipeline (void):UtilPipeline(),m_render(L"Gesture Viewer") {
EnableGesture();
}
UtilPipeline()와 m_render 사이의 쉼표는 무엇을 의미합니까? 여기 문맥 전체 코드는 :
#include "util_pipeline.h"
#include "gesture_render.h"
#include "pxcgesture.h"
class GesturePipeline: public UtilPipeline {
public:
GesturePipeline (void):UtilPipeline(),m_render(L"Gesture Viewer") {
EnableGesture();
}
virtual void PXCAPI OnGesture(PXCGesture::Gesture *data) {
if (data->active) m_gdata = (*data);
}
virtual void PXCAPI OnAlert(PXCGesture::Alert *data) {
switch (data->label) {
case PXCGesture::Alert::LABEL_FOV_TOP:
wprintf_s(L"******** Alert: Hand touches the TOP boundary!\n");
break;
case PXCGesture::Alert::LABEL_FOV_BOTTOM:
wprintf_s(L"******** Alert: Hand touches the BOTTOM boundary!\n");
break;
case PXCGesture::Alert::LABEL_FOV_LEFT:
wprintf_s(L"******** Alert: Hand touches the LEFT boundary!\n");
break;
case PXCGesture::Alert::LABEL_FOV_RIGHT:
wprintf_s(L"******** Alert: Hand touches the RIGHT boundary!\n");
break;
}
}
virtual bool OnNewFrame(void) {
return m_render.RenderFrame(QueryImage(PXCImage::IMAGE_TYPE_DEPTH),
QueryGesture(), &m_gdata);
}
protected:
GestureRender m_render;
PXCGesture::Gesture m_gdata;
};
왜 이렇게 m_render를 초기화해야합니까? – Mike
@Mike 이니셜 라이저 목록에서 뭔가를 초기화해야하는 데에는 몇 가지 이유가 있습니다. 1) 참조이므로 2) 기본값으로 초기화 할 수 없으므로 3) 멤버 변수가 'const'로 선언 되었기 때문입니다. 아마도 2)라고 생각할 것입니다. 물론 이것은 단지 더 효율적이기 때문에 단지 사용될지도 모릅니다. 기본 구성과 할당이 나중에 가능할지라도 많은 사람들이 선호하는 것으로 간주됩니다. –