0

球と三角形の間の交差テストの実装に取り​​組んでいます。

これを行う関数を設計したいと思います。関数は、との両方に対して関数sphere_triangle_intersection_test( ... )として宣言する必要があります。これにより、プライベート メンバーにアクセスできるようになります。(したがって、またはメソッドへの関数呼び出しがないため、より効率的である可能性があります。friendclass sphereclass triangleget()set()

この関数は各ループでかなり頻繁に呼び出されるため、inline関数にするのがよいでしょう。

ただし、inline関数は、少なくとも私の理解では、クラス宣言と同じファイルに表示 (定義) する必要があります。

クラスごとに 1 つのヘッダーの形式を使用しているため、これを回避する方法はありますか?

1つの可能性は次のとおりだと思います。

  • が存在するファイルsphere.hppを作成しますclass sphere
  • が存在するファイルtriangle.hppを作成しますclass 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__

次に、ファイルを 1 つだけ含めます。少し整理できますか? これで、クラス ファイルの末尾にある #include を忘れても問題ありません。

4

0 に答える 0