0

我正在努力实现球体和三角形之间的相交测试。

我想设计一个功能来做到这一点。该函数sphere_triangle_intersection_test( ... )应该被声明为friend两个class sphere和的函数class triangle,因为这允许访问私有成员。(因此可能更有效,因为没有函数调用get()set()方法。

该函数将在每个循环中被调用很多次,因此将其设为inline函数会很好。

但是,inline至少在我的理解中,函数必须与类声明出现(定义)在同一个文件中。

由于我使用的是每类一个标题的格式,有没有办法解决这个问题?

我想一种可能性是:

  • sphere.hppclass sphere要驻留的文件创建一个文件。
  • triangle.hppclass triangle要驻留的文件创建一个文件。
  • 在两个类中声明为friend inline [return type]执行交叉测试的函数。
  • 创建一个collisiontest.impl包含函数定义的文件inline以执行测试。
  • #include "sphere.hpp"triangle.hpp.
  • 在结尾处triangle.hpp,`#include "collisiontest.impl"。

虽然看起来有点狡猾......很容易忘记它collisiontest.impl包含在文件的底部......

有没有人对我如何改变/改进我在这里得到的东西有任何建议?

编辑

我突然想到我可以创建另一个文件,shapes_INCLUDE_ME.hpp其内容如下:

// shapes_INCLUDE_ME.hpp

#ifndef __shapes__include__me__hpp__
#define __shapes__include__me__hpp__ // not necessary, but good practice

    #include "sphere.hpp"
    #include "triangle.hpp"

    #include "collisiontest.impl"

#endif // __shapes__include__me__hpp__

然后你会只包含一个文件,可能会整理一下吗?现在没有忘记类文件末尾的#include 的问题。

4

0 回答 0