C ++对象切片智能指针

时间:2013-04-06 23:18:17

标签: c++ smart-pointers derived-class

您好我使用以下代码来读取从cv :: Mat派生的Image类。然后我想将对象传递给一个函数,我将它直接传递给cv :: Mat的智能指针向量。 以这种方式,据说我应该避免对象切片。然而事实并非如此。相对于真实版本,示例有点简化。

class Image : public cv::Mat {

public:
    Image(cv::Mat m) : cv::Mat(m)  {}
    Image() : cv::Mat() {}

    std::string labelGen;
    int labelNum;
};

std::shared_ptr<cv::Mat> getImage(char *readPath) {

    std::shared_ptr<Image> i(new Image(cv::imread(readPath, 0)));
    i->labelGen = "String";
    i->labelNum = 5;

    return i;
}

std::vector<std::shared_ptr<cv::Mat>> getVectors() { 


    std::vector<std::shared_ptr<cv::Mat>> v;
    v.push_back(getImage("path/path.jpg"));

    return v;
}

我究竟做错了什么;

0 个答案:

没有答案