C ++ / CLIでは、マネージド.NETジェネリックコレクションにネイティブC++クラスへのポインターを配置することはできません。
class A {
public:
int x;
};
public ref class B {
public:
B()
{
A* a = GetPointerFromSomewhere();
a->x = 5;
list.Add(a);
}
private:
List<A*> listOfA; // <-- compiler error (T must be value type or handle)
}
許可されていません。もちろん使用することもできますstd::vector<A*> list;
が、ポインターを使用することによってのみlist
マネージドクラスのメンバーを作成することができ、STLコンテナーへのポインターを使用するのは不自然に感じます。
ネイティブC++ポインターを.NETジェネリックに格納するための良い方法は何ですか?(ここではリソース管理には興味がありません。ポインターが指すオブジェクトは他の場所で管理されます)