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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Liet
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 42
#1

error C2440: 'delete' : cannot convert from 'Song' to 'void *' - C++

27.05.2012, 11:32. Просмотров 1176. Ответов 5
Метки нет (Все метки)

Строка, где выдаётся ошибка:
C++
1
delete [] mas[k-1];
Деструктор:
C++
1
2
3
4
5
6
Song::~Song ()
{
    delete [] song;
    delete [] perf;
    delete [] desc;
}
Собственно класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Song : public Performer
{
private:
    char *song;
    char *desc;
    int year;
    int rate;
 
public:
    Song ();
    ~Song ();
};
Что не так? Удаление ведётся в функции класса, кстати. И mas - массив объектов этого класса:
C++
1
mas = new Song[100];
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 11:32     error C2440: 'delete' : cannot convert from 'Song' to 'void *'
Посмотрите здесь:

malloc - cannot convert from 'void *' to 'double *' C++
delete или new (typeid(void*))(void*) C++
Delete void* p = new classobject(); C++
C++ Error C2440 невозможно преобразовать "void *" в "char *
C++ Указатели. Error C2440: '=' : cannot convert from ClassAPtr to ClassA<Tclass>
Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' C++
Error C2440: =: невозможно преобразовать "void *" в "Node *" C++
Cannot convert 'void' to 'bool' C++
Ошибка Cannot convert std::string to void* C++
Error C2440 C++
Error C2106 или error C2440 C++
Error C2440: инициализация: невозможно преобразовать "void *" в "listnode *". подскажите, что можно сделать? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6115 / 5718 / 1849
Регистрация: 18.12.2011
Сообщений: 14,608
Завершенные тесты: 1
27.05.2012, 11:35     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #2
Должно быть написано:
C++
1
delete [] mas;
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
27.05.2012, 11:36     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #3
Нельзя таким макаром удалить отдельный элемент массива (скалярное значение). Операция бессмысленна с точки зрения языка и здравого смысла. Аргументы операторов delete и delete[] должны быть указателями.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
27.05.2012, 11:39     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #4
Цитата Сообщение от Liet Посмотреть сообщение
delete [] mas[k-1];
А что конкретно вы ожидаете от такой строки?
Liet
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 42
27.05.2012, 11:45  [ТС]     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #5
Цитата Сообщение от antoha398 Посмотреть сообщение
А что конкретно вы ожидаете от такой строки?
Мне нужно удалить отдельный элемент массива - один из объектов, в нём хранящийся. Будут варианты?
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
27.05.2012, 11:46     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #6
Liet, один из вариантов: создать новый массив нового размера, скопировать туда все элементы кроме старого и удалить старый. Другой вариант — использовать какой-нибудь из контейнерных классов. А можно просто сдвинуть элементы массива и изменить индекс заполнения
Yandex
Объявления
27.05.2012, 11:46     error C2440: 'delete' : cannot convert from 'Song' to 'void *'
Ответ Создать тему
Опции темы

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