Size: a a a

2020 September 05

RM

Roy Mustang in C++ Together 2.0
В общем, все вроде работает, если к примеру один из модулей не загрузили, а другой зависит от него, то при вызове GetPlugin получишь nullptr, а потом даже если ты забыл сделать проверку на nullptr, то когда ты вернешь поток обратно на приложение, то оно увидит что у тебя там ты запрашивал плагин, а получил nullptr и завершит работу приложение с логом
источник

RM

Roy Mustang in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
в итоге по поводу говна с линковкой ты его решил через абстрактный класс интерфейса плагина, который торчит из DLL, в которой этот плагин
Да
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
хорошо, тогда получается, что проблемы нет
источник

RM

Roy Mustang in C++ Together 2.0
По сути это тупо абстрактный класс с виртуальными методами = 0
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
можно идти дальше
источник

RM

Roy Mustang in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
можно идти дальше
Ты заценил хитрожопую идею с кэшированием указателей?
источник

RM

Roy Mustang in C++ Together 2.0
на классы плагинов
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
ткни мне место в коде, я сейчас от перенапряженного дня очень туго соображаю под ночь
источник

RM

Roy Mustang in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
ткни мне место в коде, я сейчас от перенапряженного дня очень туго соображаю под ночь
источник

RM

Roy Mustang in C++ Together 2.0
Короче, там хеш мапа юзается для хранения объектов класса плагинов
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
ленивая загрузка плагинов
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
норм
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
on demand, вернее
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
а потом просто реюзаем это все
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
хорошо
источник

RM

Roy Mustang in C++ Together 2.0
Я добавил структуру, которая хранит указатель, то есть, если раньше приходилось хранить указатели на классы плагинов внутри других классов плагинов, то сейчас можно их не хранить
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
ну это сервис локатор вот, да
источник

RM

Roy Mustang in C++ Together 2.0
Тупо вызываешь GetPlugin<Type> и при первом вызове если вернет не nullptr, то он тебе указатель из мапы достанет и кэширует в PluginPtr
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
хорошо
источник

RM

Roy Mustang in C++ Together 2.0
Все последующие вызовы GetPlugin<Type> того же типа будут сразу возвращать указатель из кэша без вызова .find
источник