R
rs4i
Идея проста и стоит во главе идеологии C++:
Компилятор запрещает бессмысленные присвоения:
запретить не может.
Писать класс для каждого подобного типа не реально.
Возникла идея написать шаблон прокси класса:
Вопрос как обеспечить уникальность типа.
Очевидное решение слегка не удобно:
Пытался сделать так:
только вместо чисел подставить некий шаблон счетчик,
однако реализовать его не смог :lol: Мозг ушел в глубокую рекурсию
Остались вопросы:
1. Как реализовать шаблон UniqueType?
2. Можно ли здесь обойтись без макросов?
3. Возможно ли реализовать (уже дело принципа) шаблон счетчик?
Прошу высказать любые соображения по теме.
Код:
std::string password, login;
unsigned short TCPport, YearOfBirth;
Код:
login = TCPport; // error
Код:
Однако не менее бессмысленные:
password = login; TCPport = YearOfBirth; // ok
Писать класс для каждого подобного типа не реально.
Возникла идея написать шаблон прокси класса:
Код:
template< class ContainType >class UniqueType{
ContainType value;
public:
UniqueType( ContainType value ): value( value ){}
operator ContainType(){ return value; }
// При необходимости перегружаем еще что-нибудь.
};
Очевидное решение слегка не удобно:
Код:
template< class ContainType, class Name >class UniqueType;
struct myPasword{}; // каждый раз определять новые бесполезные именные типы
UniqueType< std::string, myPasword > password; // уникальный тип
Код:
template< class ContainType, int n >class UniqueType;
UniqueType< std::string, 1 > password; // уникальный тип
UniqueType< std::string, 2 > login; // уникальный тип
однако реализовать его не смог :lol: Мозг ушел в глубокую рекурсию
Остались вопросы:
1. Как реализовать шаблон UniqueType?
2. Можно ли здесь обойтись без макросов?
3. Возможно ли реализовать (уже дело принципа) шаблон счетчик?
Прошу высказать любые соображения по теме.