我正在使用英特尔的PCSDK,从抽象类的构造函数被覆盖的示例中我无法从语法上理解这一部分。具体来说,这一行:
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;
};
答案 0 :(得分:1)
初始化基类和成员变量的initializer list:
GesturePipeline (void) // constructor signature
: UtilPipeline(), // initialize base class
m_render(L"Gesture Viewer") // initialize member m_render from GesturePipeline
{
EnableGesture();
}
答案 1 :(得分:1)
答案 2 :(得分:1)
这是构造函数的初始化列表,用于指定在构造函数体开始之前如何初始化基础子对象和数据成员。
这个值初始化基础子对象,然后通过将字符串传递给其构造函数来初始化m_render
成员。另一个数据成员是默认初始化的,因为它没有出现在列表中。
答案 3 :(得分:1)
GesturePipeline (void):UtilPipeline(),m_render(L"Gesture Viewer") {
EnableGesture();
}
首先使用默认构造函数UtilPipeline
初始化基类,然后使用m_render
初始化m_render(L"Gesture Viewer")
。最后,它进入函数体并执行EnableGesture()
。
答案 4 :(得分:1)
这是一个初始化列表。您正在初始化该类中的元素。 Quick tutorial。逗号分隔您正在初始化的元素。它调用基础构造函数然后初始化它自己的元素。