C++;C#中使用的包装器。使用私有类作为参数
我正在创建一个用于C#的.dll,但在理解包装器时遇到了问题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++代码的函数如下:
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需要是内部的,而不是私人的。