Перечислимые данные и векторная ошибка: выражение должно быть изменяемым lvalue

Я получаю сообщение об ошибке в строках, где вводим «заголовок» и «автор». Я не совсем уверен, что делать, чтобы это исправить.

struct bookStruct
{
char title[40];
char author[40];
int pages;
int year;
};

enum menu { display=1, add, end} ;

void displayOptions();
void displayBooks();int main(){

vector<bookStruct> book(11);
string option;

book[0].title = "a";
book[0].author = "b";
book[0].pages = 23;
book[0].year = 21;

displayOptions();
cin >> option;

displayBooks(book);

return 0;
}

1

Решение

Вы не можете присвоить массиву, вы должны скопировать в него:

std::strcpy(book[0].title, "a");

Но так как вы используете C ++, я предлагаю вам использовать std::string вместо массивов символов:

struct bookStruct
{
std::string title;
std::string author;
int pages;
int year;
};

Тогда вы можете использовать обычное назначение, как вы пытаетесь сделать сейчас.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector