C プログラミングのプロセスでは、さまざまなエラーが頻繁に発生しますが、その中でも特に多いのがコンパイル エラーです。その中でも、演算子のオーバーロードは同じ数のパラメータを持たなければならないというエラーはよくあるエラーですが、今回はこのエラーの原因と修正方法について学びます。
まず、演算子のオーバーロードとは何かを理解する必要があります。演算子は C において非常に重要な概念です。演算子は、特定の操作を実行するために使用されるシンボルまたは特定の関数です。 C には、-、*、/ などの組み込み演算子がいくつかあり、これらの組み込み演算子を使用して基本的なデータ型を操作できます。ただし、カスタム型の場合は、これらの演算子をオーバーロードして、独自の型を操作できるようにすることもできます。
たとえば、Complex (複数形) という名前のクラスを定義します。このクラスには 2 つのメンバー変数、つまり実数部と虚数部が含まれます。演算子「 」、「-」、「*」、「/」などをオーバーロードすることで、2 つの複素数間の加算、減算、乗算、除算の演算を実装できます。このようにして、C の組み込み演算子を使用してカスタム型を操作できるため、非常に柔軟で便利です。
ただし、演算子のオーバーロードを行う場合は、いくつかのルールに従う必要があることに注意してください。その 1 つは、オーバーロードされた演算子には同じ数のパラメーターが必要であるということです。つまり、二項演算子 (2 つのオペランドが必要) を定義する場合、演算子のオーバーロード関数で 2 つのパラメーターを定義する必要があります。定義しないとコンパイル エラーが発生します。
たとえば、Complex クラスで " " 演算子をオーバーロードする場合、クラスで次の関数を定義します。
Complex operator + (const Complex& c) { Complex result(real+c.real, imag+c.imag); return result; }
上記のコードでは、二項演算子 " " を定義します。オペランドが 2 つあるため、パラメータも 2 つ定義されます。最初のパラメータは現在のオブジェクト (ここではこのポインタ)、2 番目のパラメータは Complex オブジェクトです。
ただし、次の関数を定義すると: (パラメータが 1 つだけ定義されている)
Complex operator + (const Complex& c) { Complex result(real+c.real, imag+c.imag); return result; }
この場合、コンパイル エラーが発生します。「オーバーロードされた演算子は同じ数のパラメータを持つ必要があります。」
この時点で必要なのは、このエラーを修正することだけです。パラメーターの数がオペレーターが必要とするパラメーターの数と同じになるように、オペレーターのオーバーロード関数でパラメーターを追加または削除する必要があります。
上記の例では、パラメーターの数がオペレーターが必要とするパラメーターの数と同じになるように、パラメーターを 1 つ追加するだけで済みます。修正されたコードは次のとおりです。
Complex operator + (const Complex& c1, const Complex& c2) { Complex result(c1.real+c2.real, c1.imag+c2.imag); return result; }
上記のコードでは、パラメータの数がオペレータが必要とするパラメータの数と同じになるようにパラメータ c2 を追加しました。このようにして、正常にコンパイルして実行できます。
要約すると、C コンパイル エラー: オーバーロードされた演算子は同じ数のパラメーターを持つ必要があります。これは、演算子をオーバーロードする場合、定義されているパラメーターの数が、シンボルに必要なパラメーターの数と同じであることを確認する必要があるためです。このエラーを解決するには、オペレーターが必要とするパラメーターの数と同じになるように、オペレーターのオーバーロード関数でパラメーターを追加または削除する必要があります。
以上がC++ コンパイル エラー: オーバーロードされた演算子には同じ数のパラメーターが必要です。これを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。