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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Liet
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 42
27.05.2012, 11:32     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #1
Строка, где выдаётся ошибка:
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];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
27.05.2012, 11:35     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #2
Должно быть написано:
C++
1
delete [] mas;
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
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
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
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 *'
Ответ Создать тему
Опции темы

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