I am making a school project and I need to create a library system with bidirectional list and structures. I want to implement constructors to make my code more clear. The problem shows up when i want to creacte struct for bidirectional list and reserve memory space for list element using new list_of_books
. The error msg I am getting is no matching function call to Book::Book() and the default constructor of "list_of_books" cannot be referenced -- it is deleted function. What does it mean and how can I fix that?
struct User {
std::string name;
std::string surname;
User(std::string name, std::string surname)
: name(name), surname(surname) {}
};
struct Date {
int day;
int month;
int year;
Date(int day, int month, int year)
: day(day), month(month), year(year) {}
};
struct Book {
int id;
std::string title;
struct User author;
std::string cathegory;
struct Date hire_date;
struct User reader;
std::string others;
Book(int id, std::string title, std::string nameA, std::string surnameA, std::string cathegory, int day, int month, int year, std::string nameR, std::string surnameR, std::string others)
: id(id), title(title), author(nameA, surnameA), cathegory(cathegory), hire_date(day, month, year), reader(nameR, surnameR), others(others) {}
};
struct list_of_books {
struct Book book;
list_of_books* next;
list_of_books* prev;
};
void push(Book data) {
if (head == NULL) {
list_of_books* element = new list_of_books;
element->book = data;
element->prev = NULL;
element->next = NULL;
head = element;
} else {
list_of_books* curr = head;
while(curr->next != NULL) {
curr = curr->next;
}
list_of_books* element = new list_of_books;
element->book = data;
element->prev = curr;
element->next = NULL;
curr->next = element;
}
}
Aucun commentaire:
Enregistrer un commentaire