Предоставление неуправляемых типов в управляемом коде - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть два неуправляемых класса в двух разных DLL:

class A
{
public:
void doSomething();
private:
int x;
}

class B
{
public:
void doSomethingToAnA(A*);
}

и я хочу обернуть их обоих в управляемый C ++, поэтому естественно:

ref class managedA
{
public:
void doSomething();
private:
A* unmanagedA;
}

ref class managedB
{
public:
void doSomethingToAnA(managedA*);
private:
B* unmanagedB;
}

поэтому doSomethingToAnA (managedA *), вероятно, должен выглядеть следующим образом:

void managedB::doSomethingToAnA(managedA* a)
{
unmanagedB->doSomethingToAnA(a->unmanagedA);
}

однако, unmanagedA является частной. Я не хочу менять его видимость или создавать для него геттер, потому что тогда пользователь C # также сможет его увидеть (что очень странно), к тому же это неправильно по дизайну. Я также не могу использовать приватную публичную видимость, так как классы расположены в разных DLL.

Есть ли хорошее "учебное" решение для этой проблемы?

1 Ответ

0 голосов
/ 14 сентября 2011

Здесь может быть применима идиома Pimpl .

...