• 締切済み

変換コンストラクタと変換関数

SHOO-3の回答

  • SHOO-3
  • ベストアンサー率56% (28/50)
回答No.3

たとえば、Complex(複素数)のような、2つの数(たとえばreとim)を持つようなクラスを定義したとして、それをdouble型に変換したいとき、reとimどちらをdoubleにすればよいでしょうか? 変換関数では、これを、 reをdoubleとする、とか、 re+imをdoubleとする、とか、 sqrt(re*re+im*im)をdoubleとする、とか、 atan2(im,re)をdoubleとする、とか、 クラスのメンバ変数関係なく0とする、とか、 いろいろと自由に定義することが出来ます。 キャストではこれが出来ません。 これが違いで、利点です。

関連するQ&A

  • C#で型変換がうまくいきません。

    C#で型変換がうまくいきません。 short r; byte[] b = new byte[] {1,2,3}; r = (short)b[1] * (short)256; というコードを書くと、 型 'int' を 'short' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください) と出てしまいます。キャストしているのに何がいけないのか全くわかりません。 どうぞ宜しくお願いいたします。

  • Java 「参照型の型変換」について

    Java初心者です。 入門書を読んでいたら、「参照型の型変換」を説明している項目に 以下の方法で行うと書いてありました。 ==前提=== Personは親クラス Employeeは小クラス Engineerは孫クラス ======== (1)Engineer型からPerson型へ暗黙の型変換する場合 Person per1 = new Engineer(); (2)Person型からEngineer型へキャストする場合 Engineer eng1 = (Engineer) per1; (3)Person型からEmployee型へキャストする場合 Employee emp1 = (Employee) per1; ======== これ、変換の方法は上記で分かったのですが、 そもそも、 "何のために参照型の型変換を行うのか" "型変換を行うと、それぞれのオブジェクトの機能がどのように変わるのか" そういった説明が一切書いておらず、その意味するところが理解出来ませんでした。 スーパークラス型からサブクラス型にキャストする場合、 サブクラス型からスーパークラス型に暗黙の型変換する場合、 それぞれのオブジェクトの性質がどう変化するのでしょうか? メソッドやフィールドに対しての挙動が何か変わるのでしょうか? 基本データ型の型変換は分かり易いんですけどね。。 参照型はどうにも。。 教えて下さい!

    • ベストアンサー
    • Java
  • Delphiの型変換について

    DelphiでParadoxにテーブルを作成するツールを 作ろうとしています。 TFieldType型のftStringを文字列'ftString'に 変換してString型の2次元配列にいれたいのですが、 うまくいきません。 String型にキャストしようとしても 「正しくない型キャスト」とエラーが出てしまいます。 どうすれば、TFieldType型をString型に 変換できるのでしょうか。 Paradoxを使ったことのある方、ご教授お願いします。

  • Javaの型や型変換について

    Javaの型や型変換についてお聞きします。 HashMap a = new HasMap(); a.put("A", "a"); a.put("B", "b"); で、a.get("A");とすると、 "a"となりますが、 String key = "A"; a.get(key);とすると、引数がObject型でないというコンパイルエラーになります。 どのように対処すればよいのでしょうか? このようにJavaの型・型変換について詳しく書かれている(その項目について)書籍を探しています。Java素人なので、理解しやすい本を教えてください。

    • ベストアンサー
    • Java
  • SQLで文字列を時刻に型変換する方法

    SQLで文字列を時刻に型変換する方法を教えていただきたいです。 char型のAというカラムに'090000'が格納されています。 この値を time型のBというカラムに型変換して登録したいのですが、 cast(A as time) としてもエラーが出てしまうので、現在は cast(SubString(A,1,2)+':'+SubString(A,3,2)+':'+SubString(A,5,2) as time) と変換しています。 もっと簡単に変換する方法はありますでしょうか? ご教示頂けましたら、助かります。 宜しくお願い致します。

  • CStringからchar*への型変換について教えてください。

    以前の質問に int型 → CString型/char型 がありましたが、 CString型をchar*型に変換する方法を 教えていただければありがたいです。 MSDNで「LPCTSTRキャスト」が説明されていましたが、 例が載ってないのでよくわかりませんでした。 よろしくお願いします。

  • フーリエ級数展開とフーリエ変換がどういったものなのか解らず、困っています。

    学校の課題で「フーリエ級数展開とフーリエ変換」について個々に以下の事を調 べるよう言われました。 1.どういったものなのか? 2.どういったことが出来るのか? 3.何でこういったものが在るのか? 4.利点と問題点 5.原理 自分でも書籍やインターネットで探しましたが難しい計算式や公式ばかりで知りたい事が見つかりませんでした…。 きっと初歩的な事なんだとは思いますが自分には理解できなくて大変困っています。是非皆さんのお答えをお願いいたします。

  • フーリエ逆変換からδ関数を導く

    フーリエ逆変換からδ関数を導く δ関数のフーリエ変換は1 じゃあ逆変換は ∫1*e^i2πft df = δ(t) だと思いますがこれは フーリエ変換で1になるから逆変換ではδ関数になるというように 理解してましたが実際に計算して解く場合にはどうすれば ∫e^i2πft df = δ(t)になるんですか?  1 ―――[e^i2πft]こうなってからあと全然わからないです i2πt どなたか教えてください

  • Visual C++

    超ド素人でVisual C++の入門本を開けたばかりなのですが、いきなりつまずいてしまいました。 本に書いてあるプログラムをコピーしてビルドしてもエラーが出ます。 「error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。」 と出ます。書籍はVC++5.0/6.0対応で、使っているのはVisual Studio2005のVC++です。バージョンが違うのでエラーが出るのでしょうか?

  • 数値への型変換について

    画像のBMPファイルを編集するため、以下の通りにファイルの読み込みをしたのですが、$bfSizeの値が文字列として定義されてしまい、数値に変換できません。 ----------------------- $fp=fopen('sample.bmp','r+b'); $bfType = fread($fp, 2); $bfSize = fread($fp, 4); ----------------------- ここで問題になっているのは、$bfSizeの型です。 echo bin2hex($bfSize); とすると 36040100 と、数値は入力されているのですが、var_dump($bfSize)で表示すると string(4) "6』『 " (』『 は半角文字です) となります。 これをsettypeやキャストで型変換すると、1バイト目の36が6に変換されてしまいます。 これを 数値として66614として変換したいのですが、どのようにしたらよいでしょうか? よろしくお願いします 環境は PHP Version => 5.2.6 Windows XP Pro です。

    • ベストアンサー
    • PHP