1

似たような種類の python の概念を持つライブラリを作成しています。C には、python has ( ) のようなべき乗演算子はありません**(たとえば、pythonpow(x,n)と同等ですx**n)。

Pre-Processor ディレクティブを使用してこの問題を解決しようとしました。しかし、トリックは見つかりませんでした。

^ この演算子は XOR 演算用なので、べき乗演算子には使用できないと思います (できますか?)

したがって、代替ソリューションは double star( **) です**。これは、コンパイラーにとって認識されない演算子であるため、これをコンパイラーに知らせるにはどうすればよいでしょうか。

これに対するアプローチまたは解決策を提案します。

4

1 に答える 1

4

C++ に新しい演算子を追加することはできないため、使用**(またはその他の新しいもの) は使用できません。また、両側が組み込み型の場合は演算子をオーバーロードできません。したがって、既存の演算子 (例: ^) を使用して float/int を float/int であるベキ乗に実装することもできません。Stroustrup の C++ FAQ でこの質問を参照してください(以下のコメントに記載されています)。

独自の数値クラスを実装して、必要な演算子をオーバーロードできますが、簡単ではなく、思ったほど「エレガント」でもクールでもありません。

したがって、関数を使用するだけです。

于 2013-11-05T17:02:01.893 に答える