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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
SoproMaster
 Аватар для SoproMaster
50 / 50 / 1
Регистрация: 12.10.2009
Сообщений: 152
#1

Явное приведение "void*" - C++

24.11.2010, 19:31. Просмотров 1319. Ответов 3
Метки нет (Все метки)

Всем привет
В коде при компиляции появляется ошибка
error C2440: =: невозможно преобразовать "void *" в "Player_texture *"
1> Для преобразования "void*" к указателю на тип, не являющемуся "void", требуется явное приведение


Вот кусок кода, которого, как я думаю будет достаточно для понятия проблемы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct _player_texture
{
  int valid; // was the loading attempt successful ? 
#ifdef  USE_SDL
  SDL_Surface *bitmap;
#else
  void *bitmap;
#endif
  GLuint tex_id; //OpenGL texture ID
  float scale_x, scale_y; // scale the texcoords, as OpenGL thinks in TEX_XSIZE and TEX_YSIZE
};
 
typedef struct _player_texture Player_texture; 
Player_texture  *pt; 
int tex_mode; // Texturing active ? 
 
pt = malloc(sizeof( *pt));   // В этой строке ошибка и есть.
Сам пробовал с проблемой разобраться, но дело с мёртвой точки не движется. Прошу помочь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 19:31     Явное приведение "void*"
Посмотрите здесь:

C++ Товарищи, мне уже надоела запись "void main()"
C++ Ошибка "ANSI C++ forbids implicit conversion from void* in initialization"
C++ Error C2440 невозможно преобразовать "void *" в "char *
C++ Невозможно преобразовать "void *" в "st *"
C++ В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
не получается передать массив из "void Vvod" в "void CalculatingEstimates" C++
C++ LNK2019: ссылка на неразрешенный внешний символ "void __cdecl run(void)" (?run@@YAXXZ) в функции _wmain
Error C2440: =: невозможно преобразовать "void *" в "Node *" C++
Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) C++
Значение типа "void" нельзя использовать для инициализации сущности типа "int" C++
Error C2440: инициализация: невозможно преобразовать "void *" в "listnode *". подскажите, что можно сделать? C++
C++ Исправить ошибку "C2562: 'main': 'void' function returning a value"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
24.11.2010, 19:39     Явное приведение "void*" #2
C++
1
pt = (Player_texture*)malloc(sizeof( *pt));
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.11.2010, 23:40     Явное приведение "void*" #3
в C++ обязательно приводить
SoproMaster
 Аватар для SoproMaster
50 / 50 / 1
Регистрация: 12.10.2009
Сообщений: 152
25.11.2010, 09:41  [ТС]     Явное приведение "void*" #4
Cпасибо, помогло!
Yandex
Объявления
25.11.2010, 09:41     Явное приведение "void*"
Ответ Создать тему
Опции темы

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