私はいくつかの演算子をオーバーロードしようとしています:
/* Typedef is required for operators */
typedef int Colour;
/* Operators */
Colour operator+(Colour colour1, Colour colour2);
Colour operator-(Colour colour1, Colour colour2);
Colour operator*(Colour colour1, Colour colour2);
Colour operator/(Colour colour1, Colour colour2);
試行したオーバーロードごとにこのエラーが発生します。
expected '=', ',', ';', 'asm' or '__attribute__' before '+' token
オペレーターのオーバーロードに関する適切なドキュメントが見つかりません。グーグルすると、クラスを使用するC++チュートリアルになります。 Cではクラスはありません。誰か助けてもらえますか?ありがとう。
Cは、演算子のオーバーロードをサポートしていません(言語に組み込まれているものを超えています)。
Cでは、オペレーターのオーバーロードはありません。
プログラム CFront を使用できるように、1985に戻るには time machine が必要です。 「C」は演算子のオーバーロードをサポートするために使用しているようです。それでも十分に洗練されたものに。 Inside the C++ Object Model byStanley B. Lippmanを参照してください。 OMG、C++はCでした!そのような 事 はまだ存在しています。
この答えは他を確認します。 「C」自体は、オーバーロードを直接サポートしていません。ただし、重要な点は、プログラマがコードを理解できるコードを記述できることです。これを実装するには、ソースを変換するツールが必要です。この場合、そのようなツールはすでに存在しています。
Edward D. Willinkによる論文 Meta-Compilation for C++、2001 には、設計機能の興味深い例があり、言語の拡張が役立ちます。 * nixシェルスクリプトとmake
ルールの組み合わせにより、このような変換が可能になります。他の例はQtMOC、ツールLexやYaccなどです。したがって、 'C'自体はこれに直接対応していませんが、ビルドするとHostツール。
この特定の例では、過負荷は意味をなさない場合があります。ただし、 任意精度の計算 を必要とするプログラムにとっては、これは非常に理にかなっています。
Cでこれらの演算子をオーバーロードすることはできません。
Cは演算子のオーバーロードをまったくサポートしていません。
操作は関数としてのみ実装できます。
Colour colour_add(Colour c1, Colour c2);
Colour colour_substract(Colour c1, Colour c2);
...
C++に切り替えることもできますが、オーバーロードのためだけに行うのはやり過ぎかもしれません。
Cでは演算子のオーバーロードは使用できません。代わりに、演算子を「疑似オーバーロード」する関数を使用する必要があります。
Colour add_colours(Colour c1, Colour c2) {
return c1 + c2; // or whatever you need to do
}