Форум программистов, компьютерный форум 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. Просмотров 1264. Ответов 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 *'
Посмотрите здесь:

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

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

Error C2440: =: невозможно преобразовать "void *" в "Node *" - C++
Почему ошибка? error C2440: =: невозможно преобразовать &quot;void *&quot; в &quot;Node *&quot; #include &lt;stdio.h&gt; #include &lt;ctype.h&gt; #include...

delete или new (typeid(void*))(void*) - C++
Доброе время суток. Пишу список. Телом каждого элемента (el) списка является void указатель(body). (предполагается что тело элемента...

Error C2106 или error C2440 - C++
Необходимо создать односвязный список из слов строки.Ошибка в 28 и 35 строке. Код: #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include...

Cannot convert 'void' to 'bool' - C++
Всем привет! Уважаемые программисты подскажите пожалуйста, при компиляции ошибка Unit1.cpp(21): E2034 Cannot convert 'void' to 'bool'...

Error C2440 - C++
Доброго времени суток! Возникла проблема при попытке реализовать Метод Отражения Хаусхолдера в C++. В строках 35-38 выделяются...

malloc - cannot convert from 'void *' to 'double *' - C++
Здравствуйте. У меня тут текст программы для дискретного преобразования Фурье. Проблему составляют строчки, где есть комменты . Я смотрел в...

Delete void* - C++
Безопасно ли удалять указатель на тип void. Допустим есть такой код: void * ptr = new char; delete ptr; Освободится ли...

Ошибка Cannot convert std::string to void* - C++
Не могу сконвертировать строку в void*: std::string str; (void*)str; Вернее invalid cast from type std::string to type void* ...

Delete void* p = new classobject(); - C++
Всем доброго вечера! Возник вопрос, подскажите пожалуйста. Допустим: void* p = new classobject(); delete p; Как компилятор узнает...

Error C2440 std::vector<_Ty> - C++
класс CFilename class CFilename { public: CFilename() { } CFilename(const char* pFilename) { m_sRaw = pFilename; } ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6284 / 5887 / 1908
Регистрация: 18.12.2011
Сообщений: 15,110
Завершенные тесты: 1
27.05.2012, 11:35     error C2440: 'delete' : cannot convert from 'Song' to 'void *' #2
Должно быть написано:
C++
1
delete [] mas;
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
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 *'
Ответ Создать тему
Опции темы

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