Пока что я так и сделал. подумал о следующем, но все они либо плохи, либо не соответствуют моему варианту использования.
- Помещение общих функций в базовый класс и эти 3 наследуют от них. Но тогда все эти три по сути относятся к одному и тому же типу.
- Скопируйте реализацию 3 раза, чтобы A, B и C имели один и тот же класс. определение. Но это определенно плохое решение.
- Из-за общей функциональности я подумал о создании класса-шаблона. Но все объекты этого шаблонного класса будут одинаковыми и будут отличаться только типом шаблона. И любой может создать новый тип с тем же именем типа, но это в конечном итоге противоречит цели.
Код: Выделить всё
template
class TemplatedClass{
public:
TemplatedClass(T val) {.....}
};
using A = TemplatedClass;
using B = TemplatedClass;
using RogueType = TemplatedClass;;
// now A and RogueType are just aliases instead of being different types.
- Создайте класс макроса и используйте его для «копирования» реализации, но я не хочу использовать макросы из-за хлопот, которые они представить при отладке.
Я понимаю, что это может звучать глупо, но, к сожалению, это странный вариант использования, с которым я застрял. p>
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/783 ... ementation