0

私は最近、C++ でクラスと演算子のオーバーロードを勉強し始め、練習のために次の Bignum クラスを書きました。リンク: http://pastebin.com/cQNwRChx . これは最終バージョンではありません。たとえば、例外処理がなく、あまり効果的ではない可能性があるため、いくつかの質問を明確にしたいと思います。

  1. このコードは MSVS 2010 で正常にコンパイルされますが、GNU C++ 4.4.1 によると、465 行目のこのスコープで「fft」が宣言されていません。
  2. 結果が巨大な場合、高速フーリエ変換を使用して数を乗算します。標準複素数が非常に遅いため、独自の実装を作成しました。私の意見では、これらの複素数は、Lint 実装の一部のようなものであるため、非表示にする必要があります。そこで、これを Lint のネストされたプライベート クラスとして宣言し、fft を Lint のフレンドとして宣言します。なぜ GNU で動作しないのですか?
  3. MSVS のデバッガーは、定数 ONE が静的定数ではないことを示しています。Lint の定義に続いて、以下に定義します。
  4. 式で int や unsigned int などを含むクラスを使用したいのですが、現在のバージョンでは問題なく動作しますが、次のようなものを書く機会も必要です: if (a) ...、ここで a は Lint です。a+bしかし、 a が int で b が Lint であるbool と write への暗黙的な変換を定義すると、あいまいさが生じます。どうすればこの問題を解決できますか?

アップデート。余分な機能や定義を含まない単純な擬似コードがあります: http://pastebin.com/rauKQjtH

4

0 に答える 0