我需要在计算机模拟中将 C 代码与 C++ 代码混合。
AC 库具有引用常规双精度数组的函数:
void position(double[3])
另一个 C 库定义了自己的vector
类型:
void do_something(*custom_vector)
我的前端(在 C++ 中)使用boost::numeric::ublas::vector
.
在第一种情况下,我有很多地方都有这种代码:
double tmp[3];
position(tmp)
boostvec r(3);
r(0) = tmp[0]; r(1) = tmp[1]; r(2) = tmp[2];
// continue working with r
还
custom_vector *v;
do_something(v);
boostvec r(3);
r(0) = v[0]; r(1) = v[1]; r(2) = v[2];
在内部,所有类型最终都是矢量容器,但它们的细微实现差异导致大量样板爆炸。我也在处理很多不同的版本double
(一些定义realtype
(这是一个双),其他定义number
(这是一个双)等)。
你如何处理这种情况?
谢谢你。