我有一个QList包含OpenCv :: Mat的列表。我想将QList写入文件并使用QDataStream将文件读入QList。
以下是我的代码的一部分:
// Variables declarations
QList<Mat> myList;
cv::Mat someData;
QString fileName = "list.dat";
QFile file(fileName);
QDataStream out(&file);
QDataStream in(&file);
// Storing some data into the list
myList.append(someData);
myList.append(someData);
myList.append(someData);
// Writing the list to a file
file.open(QIODevice::WriteOnly);
out << myList;
file.close();
// Reading a file to the list
file.open(QIODevice::ReadOnly);
in >> myList;
file.close();
我收到两个错误:
错误:C2678:二进制&#39;&gt;&gt;&#39;:未找到哪个运算符采用类型为&#39; QDataStream&#39;的左手操作数。 (或者没有可接受的转换)
错误:C2678:二进制&#39;&lt;&lt;&#39;:找不到运算符,它接受类型&#39; QDataStream&#39;的左手操作数。 (或者没有可接受的转换)
有什么建议吗?
答案 0 :(得分:1)
您需要为自定义类型Mat提供这两个运算符:
QDataStream & operator<<(QDataStream &out, const Mat& mat)
QDataStream & operator>>(QDataStream &in, Mat& mat)