您好我正在使用以下代码读取从 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;
}
我到底做错了什么;