Size: a a a

2020 September 05

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
Roy Mustang
Помидорка сука временная
на рутрекере есть лекарство
источник

RM

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

A

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

RM

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

RM

Roy Mustang in C++ Together 2.0
В общем, не знаю как это работает, это как наебка походу
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
есть короче такой паттерн - Service Locator, но он при неверном использовании обычно превращается в сраный синглтон
источник

RM

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

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Roy Mustang
Если этот абстрактный класс убрать, оставить только IPlugin и унаследовавшийся от него класс MyPlugin к примеру, то не сможешь вызвать методы из MyPlugin в другом модуле
тебе как-то надо просто схоронить инфу о типе внутри того, куда оно передается
источник

RM

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

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
самый простой и тупой вариант, короче. сделать условный
T * GetComponent<T> ()
{
return dynamic_cast<T*>(plugin);
}
источник

RM

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

RM

Roy Mustang in C++ Together 2.0
Порнуха такая что черт ногу сломит
источник

RM

Roy Mustang in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
самый простой и тупой вариант, короче. сделать условный
T * GetComponent<T> ()
{
return dynamic_cast<T*>(plugin);
}
Так у меня плагины таким образом и получают
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
самый простой и тупой вариант, короче. сделать условный
T * GetComponent<T> ()
{
return dynamic_cast<T*>(plugin);
}
у тебя как раз получается, что ты можешь запросить динамик-кастом фактический тип, и если оно реально есть, у тебя будет корректный пойнтер на этот класс
источник

RM

Roy Mustang in C++ Together 2.0
Прикол не в этом, класс плагина получить не проблема
источник

RM

Roy Mustang in C++ Together 2.0
Методы его вызвать проблема
источник

A

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