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

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

Войти
Регистрация
Восстановить пароль
 
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
#1

Приведение void указателя к определенному типу с сохранением результата - C++

22.08.2012, 04:25. Просмотров 955. Ответов 5
Метки нет (Все метки)

Есть функция
C++
1
2
3
funс(void *pointer, char type) {
    ...
}
Нужно чтобы в данной функции этот указатель приводился к определенному типу в зависимости от type, так, чтобы дальше можно было с ним работать без постоянного приведения типа через скобки.

Пробовал создавать другой указатель нужного типа:
C++
1
2
    if(type) typeone *pointer2 = (typeone *)pointer;
    else typetwo *pointer2 = (typetwo *)pointer;
Однако этот вариант не работает, т.к. новые указатели локальны в пределах if(){}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2012, 04:25     Приведение void указателя к определенному типу с сохранением результата
Посмотрите здесь:

Приведение void* указателя к типу - C++
struct tParamStruct { const char* Result; }; tParamStruct ParamStruct; void show(void *AdressPS) { // ????????

Приведение void* к типу указателя на структуру - C++
Тема обсуждалась здесь, но решения так и нет нормального Есть два (и более, хоть до 20) линейных списков и функция обхода списка В...

Приведение указателя на void к другому типу? - C++
в поиске смотрел - не помогло! Возникла проблемка: В книге сказано, что указателю на void можно присваивать все типы указателей без...

Приведение к void - C++
Доброй ночи! Просматривая код некоторой программы, обнаружил конструкцию следующего вида: void function(char a, char *p) { ...

Приведение к типу - C++
В чем разница? static_cast<int>(a); и (int)a

Приведение к типу-наследнику - C++
#include <iostream> class A { }; class B: public A { void foo() const { std::cout << "some is king of every fish"; } }; int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
22.08.2012, 07:51     Приведение void указателя к определенному типу с сохранением результата #2
C++
1
2
3
4
5
template<class T>
void func(void *ptr)
{
    T *variable = (T*)ptr;
}
Но мне кажется, что тут что-то не так. Почему сразу все не сделать через шаблоны?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2012, 08:02     Приведение void указателя к определенному типу с сохранением результата #3
Damaks, другое хочет: чтобы указатель, в теле функции, менял тип по условию. Мне кажется, компилятор такое не позволит сделать.
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
22.08.2012, 08:11     Приведение void указателя к определенному типу с сохранением результата #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
funс(void *pointer, char type) {
    switch (type) {
    case 'i':
        int *i = (int*)pointer;
        ...
        break;
    case 'f':
        float *f = (float*)pointer;
        ...
        break;
    }
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2012, 08:31     Приведение void указателя к определенному типу с сохранением результата #5
Тогда уж так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void f(void *pointer, char type)
{
    if (type) 
    {
        int *i = (int*)pointer;
        ...
    }   
    else
    {
        double *f = (double*)pointer;
        ...     
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2012, 18:09     Приведение void указателя к определенному типу с сохранением результата
Еще ссылки по теме:

Приведение к базовому типу - C++
#include &lt;iostream&gt; using namespace std; class A{ public: virtual ~A() {} }; class B: public A{ };

как в c++ проверить пренадлежит ли переменная определенному типу? - C++
Например, что бы если пользователь ввел не число а символ, то в консоль выводилось сообщение об ошибке.

Приведение переменной к другому типу - C++
float a = (float)x; // старый стиль float b = static_cast&lt;float&gt;(y); // современный стиль разве по старому не удобнее? почему...

Приведение указателя на функцию - C++
Здравствуйте, у меня простейший вопрос, но самому не догнать что-то... В качестве аргумента некой функции используется указатель на...

Приведение типа указателя - C++
Здравствуйте, у меня такой вопрос: как организовать приведение типа указателя к другому? Есть указатель string *ptr; на поле класса, нужно...

Приведение типов string.size() к (void*) - C++
Добрый день помогите пожалуста записать значение возвращаемое string.size() в фаил FILE * fp; fp = fopen(&quot;C:\\T01.txt&quot;,&quot;rb&quot;); ...


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

Или воспользуйтесь поиском по форуму:
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
22.08.2012, 18:09  [ТС]     Приведение void указателя к определенному типу с сохранением результата #6
Тогда код в функции придется повторять дважды. Других вариантов точно нет?
Yandex
Объявления
22.08.2012, 18:09     Приведение void указателя к определенному типу с сохранением результата
Ответ Создать тему
Опции темы

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