【问题标题】:How to return a vector of objects to managed code efficiently?如何有效地将对象向量返回到托管代码?
【发布时间】:2011-04-20 01:00:26
【问题描述】:

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

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

假设我们已经有一个名为 B 的结构 UnmanagedB 的托管包装。

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;
};

【问题讨论】:

  • 您需要了解哪些 your other question 尚未回答的问题?
  • 我试过了——但我不明白你在问什么。

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


【解决方案1】:

这显然是不可能的,因为UnmanagedA 包含UnmanagedB 值的向量,而A 公开了array&lt;B^&gt; 类型的属性。如果这是有意的而不是拼写错误,则需要将B^ 的内容编组为UnmanagedB 的实例。否则,让UnmanagedA 持有std::vector&lt; B* &gt; 并进行适当的生命周期管理。

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 2011-08-05
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 2021-01-17
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多