2011-03-09 20 views
0

のは、次のような状況と仮定してみましょう:私ははstdへのポインタを渡したいC++/CLIで管理クラス内の非管理対象に管理されていないポインタを渡す

class A 
{ 
public: 
    void MyMethod() 
    { 
    a->AnotherMethod(b); 
    } 
private: 
    MyType* a; 
    MyAnotherType* b; 
}; 

typedef std::vector<int>MyAnotherType; 

を::ベクトルに割り当てられました( C++/CLIコードでアンマネージC++に変換して埋め込みます)。私は単にa->AnotherMethod(b)を書く場合、ベクトルは、アンマネージコード(例:/ CLI C++での4つの要素とaに通過した後の0の要素では空である。

はそれを行うための適切な方法は何である

+1

間違って何確かに言うためにここに欠けている、あまりにも多くのコードがあります。同じモジュールのアンマネージドC++コードの一部ですそれを呼び出すC++/CLIコード、またはDLL全体にSTLコレクションを渡そうとしていますか境界(非常に悪い考え)? –

+0

@Ben、はい、まさに私はDLL間でSTLコレクションを渡したかったのです。最後に私はあきらめて、pin_ptrの回避策を立てました:) – Jamie

答えて

1

pragma managed and unmanagedを試してみてください。

あなたはDLLに渡しているクラスの定義は、非管理セクションで定義されていることを確認します。

関連する問題