我有一个 C++/CLI dll,其中有源代码,但我无法修改它,并且我有自己的 dll,我想在其中访问成员变量:
装配 1(不能修改):
public ref class A
{
public:
int m_iInteger;
SomeClass* m_pPointer;
};
组装 2(自己的):
A^ a;
int i = a->m_iInteger; // no problem
SomeClass* x = a->m_pPointer; // C2248
问题是编译器显示错误:
错误 C2248:“A::m_pPointer”:无法访问在“A”类中声明的私有成员
“对象浏览器”显示:
public SomeClass* m_pPointer A 的成员
有没有办法从不同的程序集中访问本地公共成员?
我正在使用 Visual Studio 2012
编辑: 类“SomeClass”在本机 dll 中定义(我也无法修改)
编辑2: 我找到了解决方案。它不是很好,但它有效:
System::Reflection::Pointer^ ptr = (System::Reflection::Pointer^)typeof(A)->GetField("m_pPointer")->GetValue(a);
SomeClass* result = static_cast<SomeClass*>(System::Reflection::Pointer::Unbox(ptr));