Есть 2 библиотеки. Одна официальная — 10 тыс. звезд. Вторая — враппер над основным классом этой библиотеки — 100 звезд.
Вот именно так сделано, это 100% отражает суть проблемы. Фукнция open не статическая (но вряд ли это чем поможет):
| Скрытый текст |
| #include <iostream>
class SuperStarClass1
{
public:
void superFun1() { std::cout << "1 \r\n"; }
void superFun2() { std::cout << "2 \r\n"; }
};
class Wrapper
{
public:
Wrapper* open()
{
Wrapper* wrapper = new Wrapper();
wrapper->m_superStar = std::make_unique<SuperStarClass1>();
return wrapper;
}
void wrapperFun() {m_superStar->superFun1();}
private:
std::unique_ptr<SuperStarClass1> m_superStar;
};
int main(int argc, const char * argv[])
{
std::unique_ptr<Wrapper> wrapper = std::make_unique<Wrapper>();
std::unique_ptr<Wrapper> wrapper2 = std::unique_ptr<Wrapper>(wrapper->open());
wrapper2->wrapperFun();
//wrapper2->m_superStar->superFun2();
return 0;
}
|
| |
Wrapper по сути скрывает и не оставляет возможности доступа к функциям оригинальной библиотеки, а такой доступ нужен.
Изначально был сделан форк этого Wrapper, куда я добавил нужные функции.
Однако проблема вот в чем — этот Wrapper часто обновляется, выходят новые версии с исправлениями ошибок. И каждый раз поддерживать форк — накладно.
Как бы сделать, чтобы была обертка над этим Wrapper из нескольких функций, которым требуется доступ к объекту m_superStar? Как это седлать малой кровью?
Тут стоить добавить, что на использовании этого Wrapper категорически настаивает начальник.
Какие есть идеи?
Будет ли хорошей идеей такое решение:
https://habr.com/ru/articles/762250/
Как бы сделали вы?