我有一个包含指向非托管类的指针的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;
};
答案 0 :(得分:0)
这显然不会干净,因为UnmanagedA
包含UnmanagedB
值的向量,而A公开类型为array<B^>
的属性。如果这是打算而不是拼写错误,则需要将B^
的内容编组为UnmanagedB
的实例。否则,让UnmanagedA
持有std::vector< B* >
,并负责适当的终身管理。