C++ 类、继承、虚函数、子类

基类

class CameraOpt{
public:
QLabel label;
int type;//1 DH;2、HIK;3、OpenCV初始化时根据这个字段来区分这个类是那个子类的
Param param;
public:
bool virtual openVideo();
bool virtual closeVideo();
bool virtual getVideoStatus();
protect:
bool virtual initParam();
}

子类CameraOptOpenCV

class CameraOptOpenCV : public CameraOpt{
public:
VideoCapture cap;
Mat mat;
public:
bool openVideo() override;
bool closeVideo() override;
bool getVideoStatus() override;
protected:
bool initParam() override;
}

子类 CameraOptSDK

class CameraOptSDK : public CameraOpt{
public:
bool virtual ratate();//旋转
bool virtual ptz();
bool virtual wiper();//雨刷
private:
bool virtual login();
bool virtual logout();
}

子类 CameraOptDH

class CameraOptDH : public CameraOptSDK{
public:
bool openVideo() override;
bool closeVideo() override;
bool getVideoStatus() override;
bool ratate() override;
bool ptz() override;
bool wiper() override;
protected:
bool initParam() override;
private:
bool login() override;
bool logout() override;
LONG port = -1;
}

子类 CameraOptHIK

class CameraOptHIK : public CameraOptSDK{
public:
bool openVideo() override;
bool closeVideo() override;
bool getVideoStatus() override;
bool ratate() override;
bool ptz() override;
bool wiper() override;
protected:
bool initParam() override;
private:
bool login() override;
bool logout() override;
friend void CALLBACK realDataCallback(LLONG lRealHandle);
}

结构基本上如图

问题

我想通过 CameraOpt的属性 flag ,将其动态类型转换为各个子类,完成对子类方法的调用。
即在项目中有多个CameraOpt指针,当需要使用时,对其flag对象赋值,然后动态类型转换为对应的子类,完成那么多方法操作……

怎么便捷地把CameraOpt转换为各子类?

回答

设计模式 之 策略模式、状态模式

以上是C++ 类、继承、虚函数、子类的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>