У меня есть серия файлов YAML, сгенерированных OpenCv, и я хотел бы проанализировать их с помощью yaml-cpp.
Я хорошо справляюсь с простыми вещами, но матричное представление оказывается сложным.
# Center of table
tableCenter: !!opencv-matrix
rows: 1
cols: 2
dt: f
data: [ 240, 240]
Это должно отображаться в вектор
240
240
с типом float. Мой код выглядит так:
#include "yaml.h"
#include <fstream>
#include <string>
struct Matrix {
int x;
};
void operator >> (const YAML::Node& node, Matrix& matrix) {
unsigned rows;
node["rows"] >> rows;
}
int main()
{
std::ifstream fin("monsters.yaml");
YAML::Parser parser(fin);
YAML::Node doc;
Matrix m;
doc["tableCenter"] >> m;
return 0;
}
Но я получаю
terminate called after throwing an instance of 'YAML::BadDereference'
what(): yaml-cpp: error at line 0, column 0: bad dereference
Abort trap
Я искал некоторую документацию для yaml-cpp, но, похоже, ее не было, кроме короткого вводного примера по синтаксическому анализу и генерированию. К сожалению, ни один из этих двух не помогает в данном конкретном случае.
Как я понимаю, !! указывает, что это определяемый пользователем тип, но я не вижу, как yaml-cpp его анализировать.