Size: a a a

2020 August 16

RM

Roy Mustang in C++ Together 2.0
Он не скомпилируется если ты передаешь туда foo
источник

AF

Aidar Fattakhov in C++ Together 2.0
он инитит
источник

AF

Aidar Fattakhov in C++ Together 2.0
и его почемуто больше 1 раза можно вызвать
источник

RM

Roy Mustang in C++ Together 2.0
Он инитит и добавляет его в мапу
источник

AF

Aidar Fattakhov in C++ Together 2.0
и срабатывает он только 1 раз
источник

AF

Aidar Fattakhov in C++ Together 2.0
ты не думаешьч то у тебя беды с структурой апи?
источник

RM

Roy Mustang in C++ Together 2.0
Aidar Fattakhov
и его почемуто больше 1 раза можно вызвать
И получишь nullptr
источник

RM

Roy Mustang in C++ Together 2.0
Если такой тип уже имеется
источник

RM

Roy Mustang in C++ Together 2.0
Aidar Fattakhov
ты не думаешьч то у тебя беды с структурой апи?
Нет, все прекрасно
источник

RM

Roy Mustang in C++ Together 2.0
Я объясню почему там так
источник

AF

Aidar Fattakhov in C++ Together 2.0
да адже resize id+1 прекрасен
источник

RM

Roy Mustang in C++ Together 2.0
Дай объяснить
источник

AF

Aidar Fattakhov in C++ Together 2.0
там так потомучто ты ни разу не видел DI системы походу
источник

RM

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

AF

Aidar Fattakhov in C++ Together 2.0
Aidar Fattakhov
там так потомучто ты ни разу не видел DI системы походу
обычно короче фабрики регистрируют
источник

AF

Aidar Fattakhov in C++ Together 2.0
и эта штука вызывает фабрику без параметров, когда ей нужно
источник

RM

Roy Mustang in C++ Together 2.0
Там 2 метода для получения плагина, один через GetPlutin<type> - это для локального юза, использует индексацию типа и поэтому максимально быстр и не требует хранить плагины внутри классов, делая интерфейс более упрощенным для разработчиков (чтоб он не вырос в больших проектах где множество плагинов используется). Затем я добавил метод GetPluginByName он уже на основе хеш мапы, он используется только для того чтобы один модуль мог получить плагины другого. Я сам этот метод не юзаю, но он там есть только для галочки если вдруг кто захочет
источник

RM

Roy Mustang in C++ Together 2.0
Потому что GetPlugin<Type> нельзя использовать из другого модуля чтоб получить плагин
источник

RM

Roy Mustang in C++ Together 2.0
Я думал вырезать GetPluginByName чтоб не путать разработчиков и написать чтоб те создавали внутри класса модуля метод GetPluginName(), который будет возвращать указатель через GetPlugin<Type> во втором модуле
источник

RM

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