Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 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. Просмотров 1453. Ответов 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: 'delete' : cannot convert from 'Song' to 'void *' (C++):

Указатели. 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 *" в "listnode *". подскажите, что можно сделать? - C++
#include &lt;iostream&gt; struct listnode { char *data; int value; struct listnode *next; }; struct listnode...

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

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

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

5
zss
Модератор
Эксперт С++
6928 / 6490 / 2182
Регистрация: 18.12.2011
Сообщений: 17,105
Завершенные тесты: 1
27.05.2012, 11:35 #2
Должно быть написано:
C++
1
delete [] mas;
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
27.05.2012, 11:36 #3
Нельзя таким макаром удалить отдельный элемент массива (скалярное значение). Операция бессмысленна с точки зрения языка и здравого смысла. Аргументы операторов delete и delete[] должны быть указателями.
0
antoha398
156 / 156 / 3
Регистрация: 29.03.2012
Сообщений: 418
27.05.2012, 11:39 #4
Цитата Сообщение от Liet Посмотреть сообщение
delete [] mas[k-1];
А что конкретно вы ожидаете от такой строки?
0
Liet
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 42
27.05.2012, 11:45  [ТС] #5
Цитата Сообщение от antoha398 Посмотреть сообщение
А что конкретно вы ожидаете от такой строки?
Мне нужно удалить отдельный элемент массива - один из объектов, в нём хранящийся. Будут варианты?
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 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] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

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 выделяются...


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

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

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