gpt4 book ai didi

c++ - 制作库的直通接口(interface)

转载 作者:行者123 更新时间:2023-11-28 08:20:03 25 4
gpt4 key购买 nike

如果之前有人问过这个问题,我很抱歉。我真的不确定如何搜索它。

我想做的是为自己建立一个函数库,让我 future 的学校工作更轻松。我构建了一组函数来处理基于几何的事物,例如 3D vector 、点和平面以及它们的所有相关方法(点、十字、比例)。

通过一些谷歌搜索,我找到了 Eigen library它实现了我想要的一切,包括大量 SSE 东西以使其快速。

我不了解 SSE 以及他们在那个库中所做的很多事情,所以我不想将它用作我的开发库。我的意思是,我想用我知道它们如何工作的愚蠢、缓慢的版本来编写所有代码,这样我就可以确保我做的一切都是正确的。然后,一旦我确定数学计算正确,我想将其切换为使用 Eigen 库以提高效率。

有没有什么方法可以设置一个标志,或者传递一个变量(也许是一些模板的东西?),这样我就可以将我的代码从我的东西切换到 Eigen 的东西,而不必重写我的应用程序?

基本上我想在两个库之间建立一个标准接口(interface)。

Eigen 库代码将包含在同一目录中。我有我的 Geometry.h,然后是一个包含所有该库的 Eigen 文件夹。

我不知道如何弥合两者之间的鸿沟。我是否需要为他们的所有内容编写包装器方法以便它具有通用 API?

编辑::
我还应该补充一点,我希望它尽可能快。对于点函数、交叉函数和矩阵函数等可能会被多次调用的函数,我希望不必通过虚函数或过于复杂的包装方法,以免对性能产生负面影响。

我是不是要求太多了?

结束编辑

这就是我想要的效果。但我很确定这不会做我想要的。


#ifdef BASIC_LIBRARY
class Vector3
{
float x,y,z;
float dot(Vector3);
}
#endif
#ifdef EIGEN_LIBRARY
//some sort of passthrough to eigen library
#endif

最佳答案

我建议为此使用命名空间:

namespace geometry {
class Vector3 {
...
};
}

namespace eigen {
using geometry::Vector3;

...
}

基本上,这将允许您定义基本的几何类型和操作,然后直接从其他命名空间中使用选定的部分。

关于c++ - 制作库的直通接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com