【发布时间】:2011-10-03 13:23:22
【问题描述】:
我已经为本地 C++ 类编写了两个托管 C++ 包装器,我需要一个本地 B 类的非托管对象作为构造本地 A 类的托管包装器 A 的函数中的返回参数!
例子:
// 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都是公开的吗? -
Wrapper A/B 的Constr 是公开的,GetNativeClassB 也设置为公开
标签: c# pointers object unmanaged managed