У меня есть заводская функция C++, которая будет использоваться для создания экземпляров определенных конкретных классов, которые происходят из какого-то абстрактного класса.Пометка экземпляров класса C++ с метаданными
С точки зрения кода, фактические английские названия этих конкретных классов не важны. Скажем, что это разные типы «Событие», полученные из класса «AbstractEvent». Для функции кода фактические имена производных классов не имеют значения, так как все они будут иметь какой-то уникальный числовой идентификатор, сгенерированный при создании экземпляра, который будет таким, как другие модули будут ссылаться на них, что будет работать только с ссылки на абстрактный тип, а не конкретный конкретный класс.
С точки зрения обслуживания кода, было бы полезно, чтобы кодер знал, скажите, что определенный класс или метод принял «FooEvent», с шаблоном для работы с int или «BarEvent», с шаблоном для работы с float, поэтому есть некоторый понятный для человека термин, с которым работает пользователь при использовании API.
Есть ли «канонический» способ достичь этого? Было бы предпочтительнее, если бы решение не создавало накладных расходов во время выполнения.
Вот что комментарии для. Вы можете составить стандартизованный раздел комментариев, который можно использовать для ваших классов. –
Вы можете использовать 'SFINAE' для включения/отключения разделов API, основанных на типе события. Не может быть самым читаемым, но он не будет компилироваться, если они сделают это неправильно. – lcs
, пожалуйста, напишите минимальную полную программу, которая демонстрирует, как вы думаете, что она может работать. то мы можем сказать вам, есть ли лучший способ. –