Как эффективно вернуть вектор объектов в управляемый код? - PullRequest
2 голосов
/ 20 апреля 2011

У меня есть класс ref, который содержит указатель на неуправляемый класс. класс имеет несколько базовых типов, а также вектор объектов другого класса. Я хотел бы знать лучший способ получить и установить вектор из управляемого кода. Будет ли эффективен memcpy между объектами unmangedb или будет задана каждая переменная-член unmanagedb?

для бывших (предположим, что урок закончен. Я пишу, что имеет отношение к вопросу)

Предположим, у нас уже есть управляемая оболочка для структуры 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 голосов
/ 22 апреля 2011

Это, очевидно, будет невозможно, поскольку UnmanagedA содержит вектор значений UnmanagedB, а A предоставляет свойство типа array<B^>.Если это предназначение, а не опечатка, вам нужно маршалировать содержимое B^ в экземпляры UnmanagedB.В противном случае, пусть UnmanagedA удерживает std::vector< B* > и позаботится о правильном управлении временем жизни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...