2013-11-18 5 views
2

Я разрабатываю программное обеспечение, которое должно обнаруживать различные типы кодов отслеживания (штрих-код, qr-код, RFID и т. Д.). Я сделал интерфейс TrackingIdentifier, который будет реализован BarcodeIdentifier, QRCodeIdentifier, RFIDIdentifier и т. Д. Для штрих-кода и qrcode вход для алгоритма обнаружения будет cv :: Mat &. Но для RFID это будет что-то другое. Код будет выглядеть примерно так:Существующий класс из библиотеки реализует интерфейс

class TrackingIdentifier{ 

public: 
virtual std::string getTrackingCode(ITrackingInfoHolder *holder) = 0; 
}; 

Может существующий cv::Mat реализовать этот ITrackingInfoHolder?

ответ

1

Вы можете использовать Adapter Pattern.

struct MatInfo : ITrackingInfoHolder { 
    info getInfo() override { 
     return mat....(); // delegate to cv::Mat implementation 
    } 

private: 
    cv::Mat mat; 
}; 
+0

спасибо. Я пройду через него и вернусь – harsh

+0

благодаря @hansmaad. Это то, что я хотел! – harsh

Смежные вопросы