C ++ Явный Конструктор

У меня есть класс с 2 конструкторами.

   explicit MyClass(size_t num);
template<class T> MyClass(T myObj);

И я хочу, чтобы каждый раз, когда я делаю

MyClass obj( 30 );

Первый конструктор будет называться,

И на неявных конструкторах и

MyClass obj = 30;

Второй ctor будет называться.

Как я могу это сделать?

4

Решение

30 — целочисленное значение со знаком, поэтому оно не совсем соответствует сигнатуре вашего первого конструктора (следовательно, создается экземпляр шаблона).

Вы можете либо изменить подпись явного конструктора, чтобы принять int, и тогда Myclass obj( 30 ); вызовет явный конструктор или вызовет его с помощью 30u так что вы соответствуете явной подписи.

6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector