我正在努力实现球体和三角形之间的交叉点测试。
我想设计一个功能来做到这一点。函数sphere_triangle_intersection_test( ... )
应声明为friend
和class sphere
的{{1}}函数,因为这允许访问私有成员。 (因此,由于没有函数调用class triangle
或get()
方法,因此效率可能更高。
每个循环都会调用很多次函数,所以最好把它变成set()
函数。
但是,至少根据我的理解,inline
函数必须与类声明在同一文件中出现(定义)。
由于我使用的是每个类一个标头的格式,有没有办法解决这个问题?
我猜一种可能性是:
inline
创建文件sphere.hpp
。class sphere
创建文件triangle.hpp
。class triangle
执行交叉测试的函数。friend inline [return type]
,其中包含要执行测试的collisiontest.impl
函数的定义。inline
#include "sphere.hpp"
。
triangle.hpp
的末尾,`#include“collisiontest.impl”。虽然看起来有点狡猾但很容易忘记triangle.hpp
被包含在文件的底部......
有没有人对我如何改变/改进我在这里得到的东西有任何建议?
修改
我刚刚想到我可以使用以下内容创建另一个文件collisiontest.impl
:
shapes_INCLUDE_ME.hpp
那么你只需要包含一个文件,可能会有所收获吗?现在没有关于在类文件末尾忘记#include的问题。