- - PR -
C++.netで構造体をキャストするには
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-12 15:29
C++.NETで構造体の値をString型の変数にセットしたいのですがString型にキャストする際にエラーになってしまいます。
C言語だと (char*)&構造体名 でいけると思うのですがC++.NETだとどうなるのでしょうか? どなたかよろしくお願いします。 | ||||||||
|
投稿日時: 2005-09-12 15:43
こんにちは、じゃんぬ です。
キャスト? 構造体の "値" を表す文字列であるならば、 ToString メソッドを実装して返す方が親切だと思うんですが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-09-12 16:50
じゃんぬさんこんにちは。
説明不足で申し訳ないです。 Aという構造体があり、そのメンバにaa,bb,cc及び文字列変数bufがあったとします。 struct A { String *aa; String *bb; String *cc; } String* buf; メンバには下記のような値がセットされている場合 aa = "ai" bb = "ue" cc = "o" Aの全てのメンバの値を文字列変数bufにセットしたいのです。 (結果:buf = "aiueo"となるように) ひとつづつセットすればもちろんできますが、 それではいまいちなので何か方法があればと思ったのですが・・・。 | ||||||||
|
投稿日時: 2005-09-12 16:57
こんにちは、じゃんぬ です。
"いまいち" なのは何かしろの不満があるからだと思います。 何に不満があって、"いまいち" なのか教えて頂けませんか? 構造体の "値" を string で表す "振る舞い" を、 構造体内で定義するのは何かおかしいですか? # .NET 的には、構造体の値を文字列で表した時の内容は、 # ToString で定義するのが一般的だと思うんですが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-09-12 17:01
こんにちわ。
.NET では無理やり突っ込むのは無理ですね。 文字列ならじゃんぬねっとさんが仰るとおりにするのが一番ですが、どうしてもキャストしたいなら operator を定義する、ですね。 [ メッセージ編集済み 編集者: 囚人 編集日時 2005-09-12 17:02 ] | ||||||||
|
投稿日時: 2005-09-12 17:11
C++だからといってマネージモードとアンマネージモードを一緒にして考えてはいけません。
String型は単純な文字の配列でないことはご存知でしょう。 そうなればなぜそのようなことが出来ないのかがお分かりになると思います。 あるクラスが定義されており、それがexplicit (implicit)による自動変換が 行われているのであれば可能になると思われます。 とか? まー簡単に言えばアンマネージの常識は通用しませんよってことですか? | ||||||||
|
投稿日時: 2005-09-12 17:13
例えば構造体が100個あったとして
ある条件によりどの構造体を使うか決めるような感じです。 キャストできればその処理だけを書けば済みますが メンバをひとつづつ書くとなるとそれだけ時間も手間もかかるので。 operatorも合わせてもう少し調べ見ます。 じゃんぬねっとさん囚人さんどうもありがとうございました。 | ||||||||
|
投稿日時: 2005-09-12 17:15
どもです。がると申します。
んっと…C言語好きの人間として一言だけ。
んっと。C言語で
とやっても、上述のような結果はセットできないです。 理由は…長くなるので省略(笑 ど〜しても聞きたい方がいれば、その旨を書いていただければ 説明します(確定で長文になりますが)。 ほかの方々がおっしゃっている通り「別途メソッドを用意して」 実装するのが確実だと思うです。 |