Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Liet
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 42
1

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

27.05.2012, 11:32. Просмотров 1484. Ответов 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];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 11:32
Ответы с готовыми решениями:

Указатели. Error C2440: '=' : cannot convert from ClassAPtr to ClassA<Tclass>
Добрый день. Помогите, пожалуйста, разобраться. У меня есть шаблонный класс ...

Error C2440 невозможно преобразовать "void *" в "char * - C++
Добрый день Подскажите из за чего может быть эта ошибка? static cell...

Error C2440 невозможно преобразовать "void *" в "char *
Уважаемые форумчане. Не могу понять почему ему не нравятся указатели. Запускал...

Error C2440: инициализация: невозможно преобразовать "void *" в "listnode *". подскажите, что можно сделать?
#include &lt;iostream&gt; struct listnode { char *data; int value; struct...

Error C2440 инциализация: Невозможно преобразовать "void" в "Object"
Помогите пожалуйста, при сложении двух int пишет: Ошибка 1 error C2440:...

5
zss
Модератор
Эксперт С++
7237 / 6692 / 4234
Регистрация: 18.12.2011
Сообщений: 17,653
Завершенные тесты: 1
27.05.2012, 11:35 2
Должно быть написано:
C++
1
delete [] mas;
0
Nameless One
Эксперт С++
5786 / 3435 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
27.05.2012, 11:36 3
Нельзя таким макаром удалить отдельный элемент массива (скалярное значение). Операция бессмысленна с точки зрения языка и здравого смысла. Аргументы операторов delete и delete[] должны быть указателями.
0
antoha398
156 / 156 / 27
Регистрация: 29.03.2012
Сообщений: 418
27.05.2012, 11:39 4
Цитата Сообщение от Liet Посмотреть сообщение
delete [] mas[k-1];
А что конкретно вы ожидаете от такой строки?
0
Liet
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 42
27.05.2012, 11:45  [ТС] 5
Цитата Сообщение от antoha398 Посмотреть сообщение
А что конкретно вы ожидаете от такой строки?
Мне нужно удалить отдельный элемент массива - один из объектов, в нём хранящийся. Будут варианты?
0
Nameless One
Эксперт С++
5786 / 3435 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
27.05.2012, 11:46 6
Liet, один из вариантов: создать новый массив нового размера, скопировать туда все элементы кроме старого и удалить старый. Другой вариант — использовать какой-нибудь из контейнерных классов. А можно просто сдвинуть элементы массива и изменить индекс заполнения
2
27.05.2012, 11:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2012, 11:46

Error C2440: =: невозможно преобразовать "void *" в "Node *"
Почему ошибка? error C2440: =: невозможно преобразовать &quot;void *&quot; в &quot;Node *&quot; ...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...

Ошибка cannot convert from type void*(classname::) () to type void*(*)(void*)
Подскажите пожалуйста как избавиться от ошибки? Есть ещё какой-либо способ,...


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

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

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