【发布时间】:2015-10-17 17:44:38
【问题描述】:
我正在尝试了解 C++/CLI,以便为 C++ 代码创建 Wrapper 类。我的问题是我有一个类存储指向该类的父对象的指针,因此我需要将它传递给该类。
下面是一个例子,但是完整的类有更多的功能并存储了额外的数据。
class A
{
private:
A* parent;
public:
A(A* Parent)
{
parent = Parent;
}
~A()
{
delete parent;
}
A* GetParent()
{
return parent;
}
}
我目前的想法是拥有一个非公共构造函数,以便您可以使用非托管类构造一个托管类,而无需在类外部访问它。
public ref class ManagedA
{
A* unmanaged;
ManagedA(A* unmanaged)
{
this->unmanaged = unmanaged;
}
public:
ManagedA(ManagedA^ Parent)
{
unmanaged = new A(Parent->unmanaged);
}
~ManagedA()
{
delete unmanaged;
unmanaged = NULL;
}
ManagedA^ GetParent()
{
return gcnew ManagedA(unmanaged->GetParent());
}
}
虽然这适用于类内的函数,但如果我想创建一个对象或者我有一个需要传入非托管类的函数,我仍然会遇到问题。
有没有办法解决这个问题?
【问题讨论】:
标签: visual-c++ c++-cli wrapper unmanaged managed