Я хочу создать библиотеку для автоматизации Excel Automation и выставить только некоторые из ее обширных функций. Я использую механизм #import для работы с COM Excel, так что теперь у меня есть:Как переадресовать _com_ptr_t указатели?
// EXCELAPP.H
#import "C:\\PathTo\\mso.dll" //...
#import "C:\\PathTo\\VBE6EXT.OLB" //...
#import "C:\\PathTo\\EXCEL.EXE" //...
class ExcelApp
{
public:
ExcelApp();
~ExcelApp();
void CloseExcel();
void ShowWindow();
void HideWindow();
// ...
private:
Excel::_ApplicationPtr m_app;
};
Это в статическом проекте библиотеки, и я использую это просто отлично от моей программы.
Дело в том, что я хотел бы «скрыть» от пользователей библиотеки, как она реализована. Реализация может измениться в будущем. Кроме того, наличие импорта в файле .h предоставляет всем COM-интерфейс пользователям библиотеки, и я не хочу, чтобы они (включая мое будущее) использовали для злоупотребления.
Так что я думал о том, чтобы делать что-то вроде идиомы PImpl, но мне нужно хотя бы переслать-объявить m_app, и я понятия не имею, как это сделать.
Итак, есть ли способ переслать объявления _com_ptr_t, такие как Excel :: _ ApplicationPtr? Или есть лучший способ сделать то, что я пытаюсь сделать?
Иногда Я чувствую себя полным новичком ... Как я не придумал это? Я не знаю, будет ли это наилучшим решением, но это должно было произойти со мной ... – MikMik