私の C++ プロジェクトには、おそらくプロジェクト内の別のクラスまたは別の場所で使用できるいくつかの数学的方法 (例: ポイント ファインダー、正規化など) があります。
私は C# のバックグラウンドから来ており、そのような場合、これらすべてのメソッドを含む静的クラスのようなものを作成し、それらをプログラムで使用する必要がある場合、混乱がありました。または、クラスを定義し、必要な場所でクラス オブジェクトを介して使用する必要がありますか?
この場合、何が理想的でしょうか?
私の C++ プロジェクトには、おそらくプロジェクト内の別のクラスまたは別の場所で使用できるいくつかの数学的方法 (例: ポイント ファインダー、正規化など) があります。
私は C# のバックグラウンドから来ており、そのような場合、これらすべてのメソッドを含む静的クラスのようなものを作成し、それらをプログラムで使用する必要がある場合、混乱がありました。または、クラスを定義し、必要な場所でクラス オブジェクトを介して使用する必要がありますか?
この場合、何が理想的でしょうか?
メソッド間に関係がない場合は、それらをクラス内の public static func として定義するか、専用の名前空間で通常の func として定義する必要があります。どちらの方法でも、メソッドのスコープを定義するだけです。
C++ では、クラスを定義できます。このクラスでは、これらのメソッドを public static として定義し、どこでも使用できます。例えば:
class Mathematical
{
public:
static void normalize();
}
関数は次のように使用できます。
Mathematical::normalize().
C# の静的クラス関数と同じです。
名前空間を使用します。それらをグループ化することのみを目的としてクラス内に多数の静的関数を貼り付けることは、名前空間の欠如を補うための Java のハックです。
うーん、お仕事にもよると思いますので、もう少し具体的に教えていただけないと具体的な回答はできません。
おっしゃる通り、複数箇所に書いても動作するので、コンパイラは喜ぶと思います。次に、プログラマーであるあなたを喜ばせる必要があります。
ですから、「どこにあるべきか」と自問してください。頭に浮かぶ答えは、意味のあるものです。
数学演算について: 1 つの型でのみ使用されている場合を除き、静的メソッドを持つ独自のクラス (静的クラスではなく、以下の注を参照) を使用する必要があると思います。それらが 1 つの型でのみ使用される場合は、(通常) 非静的メソッドであっても、その型内に配置することをお勧めします。
注: C++ は、C# にある静的クラスをサポートしていません (もちろんマネージド C++を使用しない限り)。