C++ C++;:内联函数的可能性,多个类的朋友?

C++ C++;:内联函数的可能性,多个类的朋友?,c++,inline,friend,file-organization,C++,Inline,Friend,File Organization,我正在致力于实现球体和三角形之间的相交测试 我想设计一个函数来实现这一点。函数sphere\u triangle\u intersection\u test(…)应声明为类sphere和类triangle的友元函数,因为这允许访问私有成员。(由于没有对get()或set()方法的函数调用,因此可能更高效 该函数在每个循环中都会被调用很多次,因此最好将其设置为内联函数 但是,inline函数,至少在我看来,必须与类声明出现(定义)在同一个文件中 因为我使用的是每个类一个标题的格式,有没有办法解决这

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

我想设计一个函数来实现这一点。函数
sphere\u triangle\u intersection\u test(…)
应声明为
类sphere
类triangle
友元
函数,因为这允许访问私有成员。(由于没有对
get()
set()
方法的函数调用,因此可能更高效

该函数在每个循环中都会被调用很多次,因此最好将其设置为
内联
函数

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

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

我想一种可能是:

  • 为要驻留的
    类球体创建一个文件
    sphere.hpp
  • 为要驻留的
    类三角形创建一个文件
    triangle.hpp
  • 将两个类中执行交叉测试的函数声明为
    friend inline[return type]
  • 创建一个文件
    collisiontest.impl
    ,其中包含执行测试的
    inline
    函数的定义
  • #在
    三角形.hpp
    中包含“sphere.hpp”
  • 在triangle.hpp的末尾,`#包括“collisiontest.impl”
不过似乎有点狡猾…很容易忘记,
collisiontest.impl
包含在文件的底部

有没有人对我如何改变/改进现有的东西有什么建议

编辑

我突然想到我可以创建另一个文件,
shapes\u INCLUDE\u 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__

然后你会只包含一个文件,可能会把事情整理一点?现在,在类文件的末尾忘记“包含”是没有问题的。

我认为每个类有一个标题通常是一个错误的决定。看看这个,这可能会有帮助:太多的“undersco”…是的,但是如果在最后粘贴每个文件,为什么要做单独的文件呢同时,我认为您正在使事情变得复杂,以获得非常低的性能改进(如果get是const和inline,我不认为会有任何开销),并且不要忘记一旦完成优化(或者如果您确定的话)在这里,您可能使事情变得复杂。最后,您还可以将模型数据完全放置在球体或三角形内以外的其他位置。这些应该只是逻辑对象,而不拥有WhozCraig指出的数据,这也是一个保留符号。符号包含两个连续下划线,或以下划线f开头用大写字母或以全局范围的下划线开头以供实现使用。请考虑使用<代码>