C++;C#中使用的包装器。使用私有类作为参数

C++;C#中使用的包装器。使用私有类作为参数,c#,c++,c++-cli,wrapper,C#,C++,C++ Cli,Wrapper,我正在创建一个用于C#的.dll,但在理解包装器时遇到了问题 让我说我原来的C++代码的函数如下: void classB::do_something(classA& parameterA); < P>在C++类包装器中,类指针是私有的: public ref class classAwrapper{ private: classA* classapointer; public: ... } 既然我不能做下面的事 void classB

我正在创建一个用于C#的.dll,但在理解包装器时遇到了问题

让我说我原来的C++代码的函数如下:

void classB::do_something(classA& parameterA);
< P>在C++类包装器中,类指针是私有的:

public ref class classAwrapper{
    private:
        classA* classapointer;
    public:
        ...
}
既然我不能做下面的事

void classBwrapper::do_something(classAwrapper parameterA){
    classbpointer->do_something(parameterA->classapointer);
}
有什么我能做的吗?

添加一个朋友

写:

private:
    friend class classBwrapper;
    classA * classapointer;
而不是

private:
    classA * classapointer;

基本上,您可以使用
friend
关键字将类和函数添加到“白名单”中<代码>类AppOnter < /代码>不能访问任何东西,但是<代码> CalbBrasePr< < /> > /P>是C++或C语言中的CulasrBrasePror?是的,我同意汉斯的观点。我认为internal关键字是你想要的,而不是private。您可能必须处理CLI程序集才能访问专用/内部指针。我唯一能想到的另一件事(我是从我的C背景中学习的)是假装
classAwrapper
是一个结构,并使用内存偏移量来获取
classapinter
。直到几分钟前我才注意到Hans。内部听起来正是我需要的。由于某些原因,在线教程总是使用私有的。谢谢,你们两个。classapinter需要是内部的,而不是私人的。