- PR -

C++.netで構造体をキャストするには

投稿者投稿内容
hiro
会議室デビュー日: 2005/09/02
投稿数: 11
投稿日時: 2005-09-12 15:29
C++.NETで構造体の値をString型の変数にセットしたいのですがString型にキャストする際にエラーになってしまいます。

C言語だと
(char*)&構造体名
でいけると思うのですがC++.NETだとどうなるのでしょうか?
どなたかよろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-12 15:43
こんにちは、じゃんぬ です。

引用:

未記入さんの書き込み (2005-09-12 15:29) より:
C++.NETで構造体の値をString型の変数にセットしたいのですが、
String型にキャストする際にエラーになってしまいます。


キャスト? 構造体の "値" を表す文字列であるならば、
ToString メソッドを実装して返す方が親切だと思うんですが...


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hiro
会議室デビュー日: 2005/09/02
投稿数: 11
投稿日時: 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"となるように)
ひとつづつセットすればもちろんできますが、
それではいまいちなので何か方法があればと思ったのですが・・・。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-12 16:57
こんにちは、じゃんぬ です。

引用:

未記入さんの書き込み (2005-09-12 16:50) より:

Aの全てのメンバの値を文字列変数bufにセットしたいのです。
(結果:buf = "aiueo"となるように)
ひとつづつセットすればもちろんできますが、
それではいまいちなので何か方法があればと思ったのですが・・・。


"いまいち" なのは何かしろの不満があるからだと思います。
何に不満があって、"いまいち" なのか教えて頂けませんか?

構造体の "値" を string で表す "振る舞い" を、
構造体内で定義するのは何かおかしいですか?

# .NET 的には、構造体の値を文字列で表した時の内容は、
# ToString で定義するのが一般的だと思うんですが...


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-09-12 17:01
こんにちわ。

.NET では無理やり突っ込むのは無理ですね。
文字列ならじゃんぬねっとさんが仰るとおりにするのが一番ですが、どうしてもキャストしたいなら
operator を定義する、ですね。


[ メッセージ編集済み 編集者: 囚人 編集日時 2005-09-12 17:02 ]
paupau
会議室デビュー日: 2005/08/24
投稿数: 13
投稿日時: 2005-09-12 17:11
C++だからといってマネージモードとアンマネージモードを一緒にして考えてはいけません。
String型は単純な文字の配列でないことはご存知でしょう。
そうなればなぜそのようなことが出来ないのかがお分かりになると思います。
あるクラスが定義されており、それがexplicit (implicit)による自動変換が
行われているのであれば可能になると思われます。

とか?

まー簡単に言えばアンマネージの常識は通用しませんよってことですか?
hiro
会議室デビュー日: 2005/09/02
投稿数: 11
投稿日時: 2005-09-12 17:13
例えば構造体が100個あったとして
ある条件によりどの構造体を使うか決めるような感じです。
キャストできればその処理だけを書けば済みますが
メンバをひとつづつ書くとなるとそれだけ時間も手間もかかるので。

operatorも合わせてもう少し調べ見ます。
じゃんぬねっとさん囚人さんどうもありがとうございました。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-09-12 17:15
どもです。がると申します。
んっと…C言語好きの人間として一言だけ。

引用:

未記入さんの書き込み (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"となるように)


んっと。C言語で
引用:

(char*)&構造体名


とやっても、上述のような結果はセットできないです。
理由は…長くなるので省略(笑
ど〜しても聞きたい方がいれば、その旨を書いていただければ
説明します(確定で長文になりますが)。

ほかの方々がおっしゃっている通り「別途メソッドを用意して」
実装するのが確実だと思うです。

スキルアップ/キャリアアップ(JOB@IT)