S
1) есть библиотека B-сплайнов в Eigen, в которой по-разному нужно обрабатывать сплайны разных размерностей (1D, 2D)
2) Услово есть два файла с 1D сплайном и 2D, причём первый содержит 2 столбца, а второй - три.
Нужно придумать аккуратную структуру или ещё что-то, что подаётся в кастомный интерфейс (с eigen), который бы обрабатывал сплайны. Идеи такие:
struct Spline2d
{
...
...
...
}
struct Spline1d
{
...
...
}
auto MySpline = Spline1d{{123, 0.0}, {345, 0.5}, {678, 0.9}};
auto m_splineFromFile = MySpline;
std::optional<BSpline> BSpline::initialize(const std::variant<Spline1d, Spline2d>& m_splineFromFile)
А уже внутри BSpline::initialize аккуратно "вскрывать" m_splineFromFile через try { std::get<Spline1d>(); }, catch { ...std::get<Spline2d>(); } Но звучит так себе, да.
В итоге хотелось бы как-то удачно разделить задачи "зачитывание параметров" и "инициализация сплайна", чтобы первую выполнял пользователь, а второй - разработчик интерфейса