我有一个托管类Parser和一个非托管类CParser。前者从托管客户端(C# 世界)的 DLL 中公开。核心功能在非托管类CParser中。由于两者都在同一个DLL中,并且是一对一的关系,托管类可以访问非托管类。
问题是我想Parser访问CParser. 我不想public:为所有成员使用,也不愿意有setter和getter。因此,我只放置了friend关键字:
class CParser
{
...
friend ref class Parser; // C2144
};
// public ref class Parser{};
我得到错误C2144,可能是由于非托管 C++ 不理解ref关键字的明显原因。如果我删除ref关键字,托管编译器(编译Parser)会报错 C2872: Ambigious Symbol。
众所周知,internal:它不适用于未管理的 C++。
如何交Parser朋友CParser?
编辑:这个问题已经在这里,但可能非托管类是在/clr. 我不能/不会使用托管编译器编译非托管类。