`using` для двух DLL - PullRequest
       13

`using` для двух DLL

1 голос
/ 21 декабря 2009

У меня есть класс, определенный в одной DLL, с определенным перегруженным членом. Вторая DLL импортирует этот класс, наследуется от него и экспортирует унаследованный класс. Унаследованный класс переопределяет одну из перегрузок указанного выше члена и, таким образом, теряет все остальные перегрузки.

Обычно решение этой проблемы, AFAIK, заключается в использовании оператора using (using BaseClass::OverloadedMember;), но, учитывая ситуацию, я получаю error C2487: 'BaseClass::OverloadedMember' : member of dll interface class may not be declared with dll interface (VC ++).

Как мне обойти это?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2009

Я бы экспортировал все версии перегруженной функции из новой DLL / класса. Таким образом, вместо использования оператора using для раскрытия версий базового класса, поскольку вам не нужно изменять их в этом случае, я бы реализовал простые функции пересылки, которые явно вызывают версии базового класса. Я ожидаю, что это обойдет проблему, с которой вы столкнулись; но это не идеально.

1 голос
/ 21 декабря 2009

Ну, я не могу проверить специфику, так как у меня нет VC ++, но один из способов - переопределить в базовом классе все перегруженные методы и экспортировать их отдельно.

Имейте в виду, что импорт / экспорт VC ++ никогда не задумывался должным образом для C ++. Поэтому вы должны сохранять экспортируемые классы простыми с точки зрения возможностей C ++ (а оператор using слишком сложен для этой цели).

...