我與英特爾的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)。當然,它可能只是被使用,因爲它更高效,並且它被許多人認爲是可取的,即使默認構建和稍後的任務也是可能的。 –