球と三角形の間の交差テストの実装に取り組んでいます。
これを行う関数を設計したいと思います。関数は、との両方に対して関数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 を忘れても問題ありません。