1

私はC++Metroスタイルアプリに取り組んでおり、参照によって文字列を渡す必要があります(どういうわけか)。最初は、文字列が不変であるために機能しないString^を渡しました。

参照によって文字列を渡す適切な方法は何でしょうか?

編集:わかりました。回答とコメントは戻り値の使用を示唆しているため、それほど簡単ではないようです。しかし、これが私の状況には当てはまらないと思う限り、このMetroアプリには2つのページがあり、文字列はそれらの2つのページ間で「共有」される必要があります。
したがって、メインページでは、クリックイベントでこれを行います。
this->Frame->Navigate(newPage, this->TestString);

2番目のページのOnNavigatedToイベントで、2番目のパラメーターをString^に変換して変更します。次にthis->Frame->GoBack()、最初のページに戻るために使用します。そこで、変更された文字列にアクセスしたいと思います。残念ながら、GoBack()は、私が知る限り、パラメーターを渡すことを許可していません。

4

2 に答える 2

5

追跡参照を使用できます。

void ModifyTheParameter(String^% value) {
    value = gcnew String("Blah");
}

これにより、パラメーターとして渡した元の変数が変更されます(詳細と例については、MSDNを参照してください)。その後、パラメータを取得する他のメソッドと同じように使用されString^ます。

ただし、可能であれば、追跡参照をパラメーターとして使用することは避けてください。を返し、String^それを元の変数に割り当てることをお勧めします。

さらに別の可能性:文字列(および場合によっては操作する他のデータ)を含む、ある種のビューに依存しないDataModelを作成することもできます。次に、そのDataModelをメソッドに渡すことができます。DataModel変数は変更されないため(プロパティのみ)、参照を渡す必要はありません。

于 2012-04-25T10:01:21.400 に答える
1

f以下の。への参照をパラメーターとして受け取る関数の例を参照してstd::stringください。

std::string someString;

void f(std::string& s);

f(someString);
于 2012-04-25T09:54:08.310 に答える