如何在C ++ / CLI托管类中访问私有变量

时间:2017-02-24 03:27:48

标签: 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;
}

这里,数学类需要用算术类初始化。 但nativeClassA是ClassA中的私有变量。 所以nativeClassB = new MyEngine::Mathematics(classA->nativeClassA);,它将发生编译错误。

所以我将nativeClassA更改为public。

但那时,nativeClassA将导出到c#。 我不想将nativeClassA变量导出到c#。

我该如何解决? 谢谢你的建议。

0 个答案:

没有答案