C++ cli 如何在C++/CLI托管类
在这里,数学类需要用算术类初始化。 但nativeClassA是ClassA中的私有变量。 所以C++ cli 如何在C++/CLI托管类,c++-cli,C++ Cli,在这里,数学类需要用算术类初始化。 但nativeClassA是ClassA中的私有变量。 所以nativeClassB=newmyengine::Mathematics(classA->nativeClassA),则会发生编译错误 所以我把nativeClassA改成了public 但届时,nativeClassA将导出到c#。 我不想将nativeClassA变量导出到c# 我怎样才能修好它? 谢谢您的建议。因为您正在编写托管类,所以可以使用C#拥有的所有访问修饰符。这似乎是一个完美的场景。
nativeClassB=newmyengine::Mathematics(classA->nativeClassA)代码>,则会发生编译错误
所以我把nativeClassA改成了public
但届时,nativeClassA将导出到c#。
我不想将nativeClassA变量导出到c#
我怎样才能修好它?
谢谢您的建议。因为您正在编写托管类,所以可以使用C#拥有的所有访问修饰符。这似乎是一个完美的场景。(链接文档是针对C#,但在C++/CLI中是相同的关键字。)internal:MyEngine::算术*nativeClassA;像这样吗?C++/CLI文档如下:
//MyWrapper.h
#include "arithmetic.h"
#include "mathematics.h"
namespace MyWrapper {
public ref class ClassA
{
public:
ClassA();
~ClassA();
int add(int, int);
private:
MyEngine::Arithmetic *nativeClassA;
}
public ref class ClassB
{
public:
ClassB(ClassA^ arith);
~ClassB();
int pow(int, int);
private:
MyEngine::Mathematics *nativeClassB;
}
}
//MyWrapper.cpp
#include "MyWrapper.h"
My::ClassA::ClassA()
{
nativeClassA = new MyEngine::Arithmetic();
}
My::ClassA::~ClassA()
{
delete nativeClassA;
}
int My::ClassA::add(int a, int b)
{
return nativeClassA->add(a, b);
}
My::ClassB::ClassB(ClassA^ classA)
{
nativeClassB = new MyEngine::Mathematics(classA->nativeClassA); //***Error***
}
My::ClassB::~ClassB()
{
delete nativeClassB;
}
int My::ClassB::pow(int a, int b)
{
int result = nativeClassB->pow(a, b);
return result;
}