ну там слишком много кейвордов очевидных тебе, но не очевидных другим. Что такое модуль, что такое хозяин. Нахрена это вообще нужно.
Ты пиши что хочешь и/или пиши реализацию хотелки из которой уже можно вывести что-то. Не пиши "как" в вопросе. "как" - у других пацанов может быть другое
Ладно, тогда я выберу 3й вариант, но вопрос касательно индексации типов + вектора понятен? В общем, каждый тип индексируется последовательно через static переменную, а для получения указателя мы тупо передаем индекс в вектор, аля vec[index] и получаем указатель. Насколько это быстро в плане производительности и дадут ли мне по шапке если я не буду хранить указатели получаемые оттуда, а каждый вызов буду вот таким образом получать их через индекс, аля GetPointer<Type>( ) ->SosatEbat()