ошибка: нет подходящего конструктора для инициализации

Я знаю, что этот вопрос уже задавался, но, пожалуйста, напишите мне. У меня проблемы с получением информации о том, как инициализировать класс.

Вот код, о котором идет речь.

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

//-------------------------------------------------------------------   ---------------------------

class Date                                                                  //Class Date
{
public:
int day;
int month;
int year;
Date();
Date(int,int,int);
~Date(void);
};

Date::Date(void)
{
day = 0;
month = 0;
year = 0;
}

Date::Date(int month, int day, int year)
{
day = day;
month = month;
year = year;
}                                                                         //Class Date

//---------------------------------------------------------------------------------------------
//Class Book
class Book
{
public:
string _title;
string _author;
Date _published;
string _publisher;
float _price;
string _isbn;
int _page;
int _copies;
Book();
Book(string,string,Date,string,float,string,int,int);
~Book(void);
};

Book::Book(void)
{
_title = "";
_author = "";
//_published;
_publisher = "";
_price = 0;
_isbn = "";
_page = 0;
_copies = 0;

}

Book::Book(string title, string author, Date published, string publisher, float price, string isbn, int page, int copies)
{
_title = title;
_author = author;
_published = published;
_publisher = publisher;
_price = price;
_isbn = isbn;
_page = page;
_copies = copies;
}                                                                           //Class Book

//---------------------------------------------------------------------------------------------

class Node                                                              //Class Node
{
friend class LinkedList;
private:
Book *_book;
Node *_next;
public:
Node(void);
Node(Book*);
Node(Book*,Node*);
~Node(void);
};

Node::Node(void)
{
_book = NULL;
_next = NULL;
}

Node::Node(Book *book)
{
_book = book;
_next = NULL;
}

Node::Node(Book *book, Node *next)
{
_book = book;
_next = next;
}                                                                       //Class Node

//---------------------------------------------------------------------------------------------

class LinkedList                                                        //Class LinkedList
{
private:
Node *_head;
Node *_tail;
public:
LinkedList(void);
LinkedList(Book*);
~LinkedList(void);
void insert_front(Book*);
void insert_rear(Book*);
void print_list(void);
};

LinkedList::LinkedList(void)
{
_head = NULL;
_tail = NULL;
}LinkedList::LinkedList(Book *book)
{
_head = new Node(book);
_tail = _head;
}                                                                       //Class LinkedList

//---------------------------------------------------------------------------------------------

void LinkedList::insert_front(Book *book)
{
if(_head == NULL)
{
_head = new Node(book);
_tail = _head;
}
else
_head = new Node(book, _head);
}

void LinkedList::insert_rear(Book *book)
{
if(_head == NULL)
{
_head = new Node(book);
_tail = _head;
}
else
{
_tail -> _next = new Node(book);
_tail = _tail -> _next;
}
}

void LinkedList::print_list(void)
{
Node *temp = _head;
while(temp!= NULL)
{
cout << temp -> _book -> _title << endl;
cout << temp -> _book -> _author << endl;
cout << temp -> _book -> _publisher << endl;
temp = temp -> _next;
cout << endl;
}
}

LinkedList::~LinkedList(void)
{

}

//---------------------------------------------------------------------------------------------
//Main
int main(void)
{
LinkedList myList;
ifstream myFile("input.txt");

string title;
string author;
Date published;         // was "Date published(int,int,int);"string publisher;
float price;
string isbn;
int page;
int copies;

while(myFile)
{
getline(myFile,title);
getline(myFile,author);
//getline(myFile,published);
getline(myFile,publisher);
//getline(myFile,price);
getline(myFile,isbn);
//getline(myFile,page);
//getline(myFile,copies);

myList.insert_front(new     Book(title,author,published,publisher,price,isbn,page,copies));
}

myList.print_list();

return 0;
}

Есть ошибка, которая меня интересует:

assignment3.cpp: 213: 33: ошибка: отсутствует соответствующий конструктор для инициализации
'Книга'
... книги (название, автор, опубликовано, издатель, цена, ISBN, страница, копия));
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
assignment3.cpp: 67: 7: примечание: конструктор-кандидат недопустим: неизвестно
преобразование из «Date (int, int, int)» в «Date» для третьего аргумента
Book :: Book (строковое название, строковый автор, дата публикации, строковая публикация ...
^
assignment3.cpp: 38: 7: note: конструктор-кандидат (неявная копия
конструктор) нежизнеспособен: требуется 1 аргумент, но предоставлено 8
учебник
^
assignment3.cpp: 54: 7: примечание: конструктор-кандидат недопустим: требуется 0
аргументов, но 8 были предоставлены
Книга :: Книга (аннулируются)
^
1 ошибка сгенерирована.

Я сделал предложенное изменение, и теперь я получаю другую ошибку:

Неопределенные символы для архитектуры x86_64:
"Date :: ~ Date ()", по ссылке с:
Book :: Book () в назначении 3-0f3b1c.o
Book :: Book (std :: __ 1 :: basic_string, std :: __ 1 :: allocator>, std :: __ 1 :: basic_string, std :: __ 1 :: allocator>, Date, std :: __ 1 :: basic_string, std :: __ 1 :: allocator>, float, std :: __ 1 :: basic_string, std :: __ 1 :: allocator>, int, int) в назначении 3-0f3b1c.o
_main в назначении 3-0f3b1c.o
ld: символы не найдены для архитектуры x86_64
clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

0

Решение

Ниже приводится объявление функции (publishedзанимает 3 intс, возвращает Date):

Date published(int,int,int)

Вы хотели создать переменную:

Date published;

или, если вы хотите явно показать, что вам небезразлична нулевая инициализация:

Date published{};
1

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

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

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