0

私はこれに本当に困惑しています.VB、アンマネージドC++、およびC#でこれを行う方法を知っていますが、何らかの理由でC++でマネージド型のref変数を受け入れることができません. 本当に簡単な答えがあると確信していますが、C#の同等物は次のとおりです。

myClass.myFunction(ref variableChangedByfunction);

私は C++ ポインタを試しました - ダイスはありません。私はrefキーワードを試しました。サイコロはありません。[out]キーワードにしてみました。うまくいきませんでした。

私の問題を明確に説明しているドキュメントも見つかりません。

4

3 に答える 3

5

関数宣言では、パラメーター名の後に % を使用する必要があることがわかります。

bool Importer::GetBodyChunk(String^% BodyText, String^% ChunkText)

そして、通常どおり変数を渡します。

于 2008-09-25T19:22:38.037 に答える
2

* の代わりに ^ を使用する

于 2008-09-25T18:38:36.970 に答える
1

少しわかりやすくするために:

^新しい C++/CLI 構文では、参照型 (System::String など) のパラメーターを で示す必要があります。これは、パラメーターが GC オブジェクトへのハンドルであることをコンパイラーに伝えます。

追跡参照が必要な場合 ( C# のref場合やoutC# の場合など) も追加する必要があり%ます。

ここでヒントを紹介します。.NET Reflectorを使用して既存のアセンブリを確認し、C++ コード スタイルに切り替えると役立つことがよくあります。これにより、異なる .net 言語間の相互運用性のための属性の使用法についての優れた洞察が得られます。

于 2010-02-17T12:22:53.477 に答える