Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
#1

Узнать тип значения, зная тип указателя - C++

23.09.2013, 12:46. Просмотров 380. Ответов 2
Метки нет (Все метки)

Здравствуйте!
Есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<class Iter> 
void func(Iter first, Iter last) 
{
   //...
   Iter_value_type = *first; // создаем локальную переменную char со значением *first
   //...
}
int main() {
    char ach[] = "Hello";
    func(&ach[0], &ach[3]);
 
};
Скажите пожалуйста можно ли как-то узнать тип значения, зная тип указателя, не прибегая к использованию дополнительного шаблонного аргумента?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 12:46     Узнать тип значения, зная тип указателя
Посмотрите здесь:

C++ Как можно объявить класс, заранее не зная его тип template.
Выражение должно иметь тип указателя C++
Выражение должно иметь тип указателя на объект C++
C++ Как мне конвертировать адрес указателя (например 00A88B68) в тип string ? C++
C++ Где в памяти хранится тип указателя?
Передача указателя на массив тип complex в функцию C++
Ошибка выражение должно иметь тип указателя на объект C++
C++ Как найти количество элементов массива, зная лишь адрес первого элемента и тип?
Что определяет тип указателя C++
Vector size - выражение должно иметь тип указателя C++
C++ Как изменить тип указателя массива ?
Как поменять тип данных у указателя? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
23.09.2013, 13:36     Узнать тип значения, зная тип указателя #2
Во-первых, если функция вызывается только для указателей, то можно сделать так:
C++
1
2
3
4
5
6
7
template< class Iter > 
void func( Iter* first, Iter* last )
{
   ...
   Iter value = *first;
   ...
}
Во-вторых, при наличии C++11 можно сделать так:
C++
1
2
3
4
5
6
7
8
template< class Iter > 
void func( Iter first, Iter last )
{
    ...
    auto value1 = *first;
    decltype(*first) value2 = *first;
    ...
}
Ну и в-третьих, на всякий случай, просто узнать тип можно с помощью
C++
1
typeid(*first).name();
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
23.09.2013, 13:38  [ТС]     Узнать тип значения, зная тип указателя #3
Цитата Сообщение от Fyret Посмотреть сообщение
Во-первых, если функция вызывается только для указателей, то можно сделать так:
C++
1
2
3
4
5
6
7
template< class Iter > 
void func( Iter* first, Iter* last )
{
   ...
   Iter value = *first;
   ...
}
Во-вторых, при наличии C++11 можно сделать так:
C++
1
2
3
4
5
6
7
8
template< class Iter > 
void func( Iter first, Iter last )
{
    ...
    auto value1 = *first;
    decltype(*first) value2 = *first;
    ...
}
Ну и в-третьих, на всякий случай, просто узнать тип можно с помощью
C++
1
typeid(*first).name();
Спасибо!
Yandex
Объявления
23.09.2013, 13:38     Узнать тип значения, зная тип указателя
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru