String型の参照渡し

[戻る]
yama 2007/12/13(木) 10:34:33
VC++2003.NETを使用しております。
以下のような場合に引数に値が返ってきません。

<呼び出し元の関数>
 String* str = __gc new String("");
 errCode = func(str);  //引数のstrにfunc()で値を入れて返してもらいたい。
 Debug::WriteLine(str); //空のStringとなってしまう。funcで入れたつもり
の"sssss"を表示したい。

<Stringを設定する関数>
Int32 aaa::func( String* str )
{
 str = S"sssss";
 return errCode;
}

初歩的な間違いなのだろうと思うのですが、よくわかっておりません。
よろしくお願いいたします。

Blue 2007/12/13(木) 10:45:50
C++マネージでのStringの受け渡し
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-8063.htm


ちなみにC++/CLI(VS2005)では % で参照渡しとなります。

yama 2007/12/13(木) 11:05:40
[[解決]]
すばやいご回答ありがとうございます。
以下でうまくいきました。

<呼び出し元の関数>
 String* a = __gc new String("");
 errCode = func(&a); //&にする。
 Debug::WriteLine(a);

<Stringを設定する関数>
Int32aaa::func( String** str ) //**にする。
{
 *str = S"sssss"; //*strに対して値を設定
}

ありがとうございました。

古いスレッドには追加発言できません。