Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
1

универсальный указатель

12.03.2012, 12:50. Просмотров 3787. Ответов 11
Метки нет (Все метки)

Возможно ли сделать универсальный указатель, который будет указывать на переменную любого типа?
Ведь указатель по сути - адрес.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2012, 12:50
Ответы с готовыми решениями:

Универсальный указатель или универсальный скалярный тип
Здравствуйте! Помогите, пожалуйста написать программу: требуется написать универсальный скалярный...

Указатель типа void. Использование косвенного связывания через универсальный указатель
Необходимо использовать косвенного связывания через универсальный указатель, примерный вид: struct...

универсальный указатель
Добрый вечер. Можно ли создать шаблон, что бы не приводить явно универсальный указатель к...

Специализация и обобщение в С++ через универсальный указатель
Здравствуйте, уважаемые участники форума! Возникла следующая проблема. Необходимо написать...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
11
Эксперт С++
5816 / 3468 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
12.03.2012, 12:54 2
Ksan, void*
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
12.03.2012, 13:02  [ТС] 3
C++
1
2
3
void *upoint;
upoint = new int;
delete upoint;
он мне варнинг выдает
C++
1
38 D:\c_Dev\forK\f1.cpp [Warning] deleting `void*' is undefined
в чем соль?
0
Эксперт С++
5816 / 3468 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
12.03.2012, 13:04 4
C++
1
delete (int*) upoint;
1
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
12.03.2012, 13:32  [ТС] 5
а, да, и можно ли не зная, на какой тип указывает указатель удалить его?
0
Эксперт С++
5816 / 3468 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
12.03.2012, 13:33 6
нельзя
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
12.03.2012, 13:36  [ТС] 7
Еще один глупый вопрос, что бы не создавать тему:

C++
1
2
3
4
void f(int i[])
{
  
}
Можно ли узнать длину массива?
0
Эксперт С++
5816 / 3468 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
12.03.2012, 13:39 8
в общем случае нельзя. Но если массивы будут всегда статическими, то можно узнать размер, используя трюк с шаблонами по размеру массива

C++
1
2
3
4
5
template <size_t n>
void func(int (&static_array)[n])
{
   std::cout << "size = " << n << std::endl;
}
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
12.03.2012, 14:05  [ТС] 9
У меня не хочет создавать указатель на флоат. Покажи, как это делается
0
Эксперт С++
5816 / 3468 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
12.03.2012, 14:07 10
C++
1
2
3
4
foat value = 3;
float* ptr1 = &value;
// or 
float* ptr2 = new float(3);
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
12.03.2012, 14:09  [ТС] 11
Я имел ввиду через void*

я пишу:

C++
1
2
3
4
5
        void *up;
    up = new float;
    up = (void*)(3.14);
    cout << float(up);
    delete (float*)up;
но он выдает ошибку

C++
1
2
67 D:\c_Dev\forK\f1.cpp cannot convert `3.14000000000000012434497875801753252744674682617e+0' from type `double' to type `void*' 
68 D:\c_Dev\forK\f1.cpp pointer value used where a floating point value was expected
0
Эксперт С++
5816 / 3468 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
12.03.2012, 14:13 12
Цитата Сообщение от Ksan Посмотреть сообщение
но он выдает ошибку
это потому, что ты присваиваешь значение указателю. А надо области памяти, на которую указывает указатель (не забыв скастовать указатель к нужному типу):
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    void* ptr = new float;
    *(float*) ptr = 3.14;
    std::cout << *(float*) ptr << std::endl;
    delete (float*) ptr;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2012, 14:13

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Универсальный вызов метода через указатель на объект
Никак не могу найти универсальную конструкцию, которая позволяла бы вызывать любой метод класс, с...

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая...

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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