我有一个托管类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
. 我不能/不会使用托管编译器编译非托管类。