Использование псевдонимов для строгого набора параметров функцииC++

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

Сообщение Anonymous »

Можно использовать псевдоним, чтобы изменить буквальную подпись функции: < /p>

using String = std::string;

void Print(String s) { ... };
< /code>

Но это не запрещает вызову print < /code> с помощью std :: string < /code>: < /p>

Print(std::string{"Hello world"}); // Still works
< /code>

Это имеет смысл - псевдоним строго для упрощения имени для типа, он не определяет новый тип. Непосредственное следствие этого заключается в том, что это также было бы возможно: < /p>

using StringA = std::string;
using StringB = std::string;

void Print(StringA s) { ... };
void Print(StringB s) { ... };

Print(StringA{"Hello world"});
Print(StringB{"Hi everyone"});
< /code>

Мое текущее решение состоит в том, чтобы определить простые классы обертки, которые удерживают тип, который я хочу, чтобы псевдоним в качестве члена. Это не идеально, потому что это требует дублирования интерфейса для класса участника в обертку, что не нужно при использовании псевдонима.


Подробнее здесь: https://stackoverflow.com/questions/329 ... parameters
Ответить

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

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

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

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

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