- ベストアンサー
Borland C++ Compiler 5.5 無償版
このコンパイラで複素数は complex<double> j(0.0,1.0),z; で定義しなければなりませんでした 私の古いObjectWindowsコンパイラでは complex j(0.0,1.0),z; で動きます 何故でしょう またこのコンパイラで complex<double> j(0.0,1.0),z; とする以外に complex ? z; で複素数を宣言できますか? (?のところをどのような文字を入れたらいいかと言うことです) よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これからはっていうか、そのへんはMSとかBorlandが勝手に拡張したもので、ANSI規格からは外れているはずです。 もしくはC++規格かな。
その他の回答 (1)
- haporun
- ベストアンサー率40% (230/562)
回答No.1
テンプレートクラスとかテンプレート関数とか知ってます? 内部の定義にもよりますが、この場合は各ベクトルがdouble型の複素数を作れます。 doubleのかわりにintにしたら、各ベクトルがintの複素数を作れますし、unsigned intとか入れて、複素数の定義に反しているようなものも作れるはずです。 文字列はたぶんムリです。 後者はおそらくdouble固定なのでしょう。
お礼
テンプレートは知っています ただ過去のコンパイラとのコンパチのためデフォルトでdoubleになるようにしなかったのが不思議です ということはcomplex宣言はこれからはcomplex<T>としてTを必ず記述しなければならないのですね? Tにdouble以外のものを入れる人はほとんどいないと思いますので わざわざ不便にしてしまいましたねボーランドさんは complex<double> *p=new complex<double>[1048576]; だと2度煩わしいですね? どうもありがとうございました