Переменная типа С++ для функции
Как передать тип переменной функции? например:
void foo(type){
cout << sizeof(type);
}
Ответы
Ответ 1
Вы не можете передавать такие типы, потому что типы не являются объектами. Они не существуют во время выполнения. Вместо этого вам нужен шаблон, который позволяет вам создавать экземпляры функций с разными типами во время компиляции:
template <typename T>
void foo() {
cout << sizeof(T);
}
Вы можете вызвать эту функцию, например, с помощью foo<int>()
. Он создавал бы экземпляр функции с заменой T
на int
. Посмотрите шаблоны функций.
Ответ 2
Как отметил Джозеф Мэнсфилд, шаблон функции будет делать то, что вы хотите. В некоторых ситуациях может иметь смысл добавить параметр к функции, поэтому вам не нужно явно указывать аргумент шаблона:
template <typename T>
void foo(T) {
cout << sizeof(T)
}
Это позволяет вам вызывать функцию как foo(x)
, где x
- это переменная типа T. Беззамертная версия должна быть вызвана как foo<T>()
.