Различные типы с одинаковой базовой реализациейC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Различные типы с одинаковой базовой реализацией

Сообщение Anonymous »

Я хочу создать отдельные типы A, B и C. Все эти три типа имеют одну и ту же функциональность (их общие функции имеют одинаковую реализацию), но эти три должны быть разными типами, чтобы нигде не было неявных преобразований.
Пока что я так и сделал. подумал о следующем, но все они либо плохи, либо не соответствуют моему варианту использования.
  • Помещение общих функций в базовый класс и эти 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.
  • Создайте класс макроса и используйте его для «копирования» реализации, но я не хочу использовать макросы из-за хлопот, которые они представить при отладке.
Существует ли шаблон проектирования, который я могу использовать, чтобы гарантировать, что A, B и C< /code> имеет ту же шаблонную реализацию, но по-прежнему создает разные типы.
Я понимаю, что это может звучать глупо, но, к сожалению, это странный вариант использования, с которым я застрял. p>
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/783 ... ementation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»