如何有效地将对象向量返回到托管代码?

时间:2011-04-20 01:00:27

标签: visual-c++ c++-cli

我有一个包含指向非托管类的指针的ref类。该类有一些基本类型,也有另一个类的对象向量。我想知道从托管代码获取和设置向量的最佳方法。 unmangedb对象之间的memcpy是高效还是设置unmanagedb的每个成员变量?

for ex(假设课程已完成。我正在撰写与问题相关的内容)

假设我们已经为struct UnmanagedB设置了一个名为B的托管包装。

struct UnmanagedA
{
   int a;
   vector<UnmanagedB> list;
};

public ref class A : public System::IDisposable
{
public:
    // properties
    property System::UInt32 a
   {
       System::UInt32 get();
       void set(System::UInt32 value);
   }

   property array<B^>^ list
   {
       System::array<B^>^ get(); // what is the best way to set and get the vector
       void set(array<B^>^ value);
   }

private:
   UnmanagedA* obj1;
};

1 个答案:

答案 0 :(得分:0)

这显然不会干净,因为UnmanagedA包含UnmanagedB值的向量,而A公开类型为array<B^>的属性。如果这是打算而不是拼写错误,则需要将B^的内容编组为UnmanagedB的实例。否则,让UnmanagedA持有std::vector< B* >,并负责适当的终身管理。

相关问题