我已经为本地C++类编写了两个托管C++包装器,并且我需要本地类B的非托管对象作为构造本机类A的托管包装器A的函数中的返回参数!在C#中返回非托管对象指针
例子:
// Wrapper A
WrapperA::WrapperA(ClassB *classB)
{
ClassA *classA = new ClassA(classB);
...
}
// native c++
ClassA::ClassA(ClassB *classB)
{
m_classB = classB; // ClassB *m_classB; in .h
...
}
// Wrapper B
ClassB* WrapperB::GetNativeClassB()
{
return m_classB; // ClassB *m_classB; in .h
}
// in C#
...
WrapperB wrapperB = new WrapperB();
unsafe // need for C++ pointer
{
WrapperA wrapperA = new WrapperA(wrapperB.GetNativeClassB());
// Error: is inaccessible due to its protection level
// -> is set to public
}
...
有没有更好的办法不安全,为什么我得到一个访问错误???
预先感谢您!
招呼leon22
你确定这两个'WrapperB :: GetNativeClassB'和'WrapperA :: WrapperA'是上市? –
包装A/B的构造是公开的,也GetNativeClassB设置为公开 – leon22