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

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

Войти
Регистрация
Восстановить пароль
 
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
#1

Чем плохой указатель на void? - C++

02.08.2013, 12:10. Просмотров 885. Ответов 11
Метки нет (Все метки)

Здравствуйте! Недавно прочитал статью на хабре http://habrahabr.ru/post/102930/ Сабж - архитектура игрового двигла, а именно менеджер состояний. В нем используется указатель на войд. Вот внизу комментарии есть, что это все сплошной говнокод и указатель такой нельзя юзать в большом проекте. Объясните мне, почему? Что же такого страшного в использование такого указателя не только в данной статье, а в общем? Чем плох указатель на void?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 12:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чем плохой указатель на void? (C++):

Функция принимает указатель на void и возвращает указатель на int - C++
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

При удалении первого элемента из динамического списка присваивается плохой указатель - C++
Проблема появляется только при удалении первого элемента. // Запись содержит марку автобуса, максимальную скорость, вместимость. //...

Указатель на void - C++
Как можно сделать универсальную функцию, которая принимает указатель на неопределенный тип, увеличивает значение на которое указывает этот...

Указатель типа void - C++
Добрый день. enum Type { Double, Int, Float }; void func(int k,enum Type t,...) { void *pv; pv = (...); ... }

Указатель типа void c++ - C++
Haпример указатель типа void*ptr char *p void *ptr="abs"; p=((char *)ptr);Так указатель неопределённого типа, присваивается к...

Указатель void на структуру - C++
Есть некий тип структуры action. Для функции _beginthread третьим параметром требуется указатель на void. Как преобразовать структуру в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2013, 12:19 #2
а вы можете сказать на что указывает ваш void* в каждый момент времени?
на то и были придуманы шаблоны в с++ чтоб тип всегда был известен
1
Сергей_Солопов
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 20
02.08.2013, 12:26 #3
Для большого проекта уменьшает скорость обработки из-за выведения времени на определения типа.
0
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
02.08.2013, 12:32  [ТС] #4
Jupiter, То есть нужно пользоваться шаблонами или полиморфизмом?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.08.2013, 12:40 #5
Цитата Сообщение от anubis1768 Посмотреть сообщение
Jupiter, То есть нужно пользоваться шаблонами или полиморфизмом?
можно и void*
Те кто страдают склерозом и не помнят весь свой код - пусть боятся
1
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.08.2013, 13:16 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от anubis1768 Посмотреть сообщение
То есть нужно пользоваться шаблонами или полиморфизмом?
нет, шаблоны придумали просто так чтоб ними никто не пользовался
3
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.08.2013, 15:07 #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Те кто страдают склерозом и не помнят весь свой код - пусть боятся
Писать код надо так, чтобы помнить пришлось как можно меньше. Код должен быть "говорящим", и говорящим как можно более конкретные вещи. Может еще имена переменным предложите давать var1, var2 .. ?

Если есть некая иерархия объектов, то в качестве обобщенного указателя (void*), используется указатель на самый базовый класс. А там уже виртуальными методами и прочими RTTI можно получить реальный тип объекта.
0
Kastaneda
02.08.2013, 15:37
  #8

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Писать код надо так, чтобы помнить пришлось как можно меньше. Код должен быть "говорящим", и говорящим как можно более конкретные вещи. Может еще имена переменным предложите давать var1, var2 .. ?
[sarcasm] рассуждения типичного склеротика [/sarcasm]

0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
02.08.2013, 15:44 #9
Цитата Сообщение от Jupiter Посмотреть сообщение
нет, шаблоны придумали просто так чтоб ними никто не пользовался

Не по теме:

Вот, когда пытаешься скомпилировать некий код (ошибочный офк) в котором spirit/fusion/proto - это высказывание кажется правдивым.

1
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
02.08.2013, 22:01 #10
Цитата Сообщение от anubis1768 Посмотреть сообщение
Чем плох указатель на void?
Ничем. Пока он используется как указатель на "непонятный кусок байтов, смысл которого меня вообще не волнует". Если смысл появляется, то стоит использовать указатель на какой-то конкретный тип (он может быть неопределённым, но имя ему обязательно надо дать). Тогда хоть чуть-чуть плюшек статической типизации будет для (очевидно) динамически типизированного кода.
1
gray_fox
02.08.2013, 22:36
  #11

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Те кто страдают склерозом и не помнят весь свой код - пусть боятся
lol у меня склероз оказывается... спасибо, доктор)

1
Croessmah
03.08.2013, 18:46     Чем плохой указатель на void?
  #12

Не по теме:

Цитата Сообщение от anubis1768 Посмотреть сообщение
а именно менеджер состояний.
Статья слизана с книги "Programming Role Playing Games with DirectX"

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2013, 18:46
Привет! Вот еще темы с ответами:

Арифметика указателей (указатель на void*) - C++
У меня есть указатель на void*, который я получил с помощью void *beginPointer = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);Мне...

Обобщенный указатель типа void - C++
В приложенной картинке рассказывается о динамическом распределении памяти в С. Сказано, что функция malloc() возвращает указатель типа...

Указатель или ссылка на указатель. В чем разница? - C++
Есть вопрос про указатели и ссылки на указатели :scratch: Хочу в функциях f1() и в f2() динамически выделить память и возвратить этот...

Привести указатель на класс к указателю на void - C++
Хай #pragma once #include "list.h"; #include "Print.h"; class Robot { public:


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.08.2013, 18:46
Ответ Создать тему
Опции темы

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