在抽象超人姿勢偵測類別定義檔AbstractPowerPoseDetector.h內,宣告一個 HenshinDetector 型別的屬性m_henshinDetector,我們可以用這個屬性來得知鹹蛋超人變身情形,除了這個屬性外,最重要的是定義一個虛擬函式detect()以實現多形機制(polymorphism) ,多型是運用類別 間繼承的關係,使父類別函式可以當成子類別函式的通用型態。
。
抽象超人姿勢偵測類別定義檔AbstractPowerPoseDetector.h的程式列表:
#ifndef _ABSTRACT_POWER_POSE_DETECTOR_H_
#define _ABSTRACT_POWER_POSE_DETECTOR_H_
#include "common.h"
#include "AbstractPoseDetector.h"
#include "HenshinDetector.h"
class AbstractPowerPoseDetector : public AbstractPoseDetector
{
protected:
HenshinDetector* m_henshinDetector;
public:
AbstractPowerPoseDetector(HenshinDetector* henshinDetector);
virtual ~AbstractPowerPoseDetector();
virtual void detect();
};
#endif
在抽象超人姿勢偵測類別實作檔AbstractPowerPoseDetector.cpp內,我們可以看到在建構子AbstractPowerPoseDetector()函式中,儲存henshinDetector,並在detect()函式中使用,而且在使用getStage()函式來判斷是否已變身為鹹蛋超人,若是則返回,若不是則呼叫父類別
AbstractPoseDetector::detect()函式。
抽象超人姿勢偵測類別實作檔AbstractPowerPoseDetector.cpp的程式列表:
#include "AbstractPowerPoseDetector.h"
AbstractPowerPoseDetector::AbstractPowerPoseDetector(HenshinDetector* henshinDetector) :
AbstractPoseDetector(henshinDetector->getUserDetector())
{
m_henshinDetector = henshinDetector;
}
AbstractPowerPoseDetector::~AbstractPowerPoseDetector()
{
}
void AbstractPowerPoseDetector::detect()
{
if (m_henshinDetector->getStage() != HenshinDetector::STAGE_HENSHINED) {
return;
}
AbstractPoseDetector::detect();
}
沒有留言:
張貼留言