最近,make_sharedを使ってリソース管理を行っているのですが,
いつものようにmake_sharedを使ったところエラーが出てしまいました...
エラーが出たコードは以下のようになっています(OpenCVを使っています)
main関数
lang
1cv::Mat img_src = imread("img.jpg"); 2boost::shared_ptr<MouseEvent> pPE = boost::make_shared<MELine>(img_src.clone()); // エラー 3cv::setMouseCallback("src", pPE->callback_event, 0);
MELineクラス
lang
1class MELine : public MouseEvent { 2 cv::Point start; 3 cv::Point end; 4 5public: 6 MELine(cv::Mat& edit_img) : 7 MouseEvent(edit_img), 8 start(-1), 9 end(-1) { 10}; 11 virtual ~MELine() {}; 12 void callback_event(int event, int x, int y, int flags, void* param) { 13 // 省略 14 }; 15};
MouseEventクラス
lang
1class MouseEvent { 2protected: 3 cv::Mat edit_img; 4 5public: 6 MouseEvent(cv::Mat& edit_img) : 7 edit_img(edit_img) { 8 } 9 virtual ~MouseEvent() {}; 10 virtual void callback_event(int event, int x, int y, int flags, void* param) = 0; 11};
エラー: required from here
main関数では画像内で生じたマウスイベントを受け取るコールバックを登録しています.
MELineクラスはMouseEventクラスを継承しており,線分を引くコールバック関数を定義しています.
MouseEventクラスはイベントの基底クラスです.
プログラミング初心者なので,言い回しや用語の使い方等色々と間違っている箇所はあると思いますが,
なぜmake_sharedでエラーが出てしまっているのか,教えていただけると助かります.

回答2件
あなたの回答
tips
プレビュー