2016-07-17 1 views
-4

В приведенном ниже коде я пытаюсь получить доступ к элементу ссылочного массива структур и сдвига это в индексе массива.
Ошибка invalid conversion from ‘int’ to ‘const char*’ [-fpermissive] возникает при доступе к структуре, поскольку ссылка на индекс, по-видимому, считывается как указание cstring. Как я могу получить доступ к элементу struct в этом контексте? Что не так?Модифицирующий элемент структуры, который имеет ошибку типа int: неверное преобразование из 'int' в 'const char *' [-fpermissive]

void removeSong (Song songList[], int& size){ 
    int indexRem; 
    int i; 
    cout << "Input index to remove" << endl; 
    cin >> indexRem; 

//Error checking for correct index(0 and 1 less than count) needed 

    for(i = indexRem; i < size; i++){ 
     songList[i] = songList[i+1]; 
    } 

    strcpy(songList[i].title, songList[i+1].title); 
    strcpy(songList[i].artist, songList[i+1].artist); 
    strcpy(songList[i].album, songList[i+1].album); 
    strcpy(songList[i].min, songList[i+1].min); 
    strcpy(songList[i].sec, songList[i+1].sec); 

    size--; 
} 

Редактировать: Этот вопрос рисует неверную связь с c-строками. Проблема заключается в неправильном использовании функции strcpy.

+0

Что касается ошибки, * где * вы ее получаете, на какой строке? И как выглядит структура? –

+0

Любая причина, по которой вы просто не могли использовать 'std :: vector ' и дополнительно 'std :: string' вместо массивов char? – PaulMcKenzie

+0

Ошибка возникает в 'strcpy (songList [i] .min, songList [i + 1] .min); strcpy (songList [i] .sec, songList [i + 1] .sec); ' – 0x1000001

ответ

1

Без хотя бы обзора определения структуры Song, все, что я могу предположить, состоит в том, что хотя бы один из его членов имеет тип int. Функция strcpy является только, необходимой для C-строк (переменные типа const char*), поэтому вы получите ошибку, если попытаетесь использовать ее для int.

+0

Это ответ. Благодарю. – 0x1000001

Смежные вопросы