Ошибка C2662: не удается преобразовать из const в ссылку - PullRequest
0 голосов
/ 05 апреля 2020

Я студент первого курса и только начал изучать C ++. Моя программа выдает ошибку C2662 (мой компилятор Express 2010+). Не могли бы вы помочь мне. Мой фрагмент программы приведен ниже:

class Book
{
private:
    string title;
    string author;
    string type;
    int date;
    int numberOfPages;
public:
    Book();
    Book(const Book& book);
    ~Book();
    void setBookTitle(const string& title);
    void setAuthorName(const string& author);
    void setBookType(const string& type);
    void setDateofPublication(const int& date);
    void setNumberofPages(const int& numberOfPages);
    void print(const Book& book);
    string getBookTitle()const;
    string getAuthorName()const;
    string getBookType()const;
    int getDateofPublication()const;
    int getNumberofPages()const;
    Book changeBookTitle(const Book& book);
    Book changeAuthorName(const Book& book);
    Book changePublicationYear(const Book& book);
    Book changePublicationType(const Book& book);
    Book changeNumberofPages(const Book& book);
    Book operator=(const Book& book);
    bool operator==(const Book& book);
    friend istream& operator>>(istream& in, Book& book);
    friend ostream& operator<<(ostream& out, const Book& book);
};
void Book::setBookTitle(const string& title)
{
    this->title=title;
}
    Book Book::changeBookTitle(const Book& book)
{
    string title;
    cout<<"The current title of the book is "<<book.getBookTitle()<<endl;
    cout<<"Enter the new title: ";
    cin>>title;
    book.setBookTitle(title);
    cout<<"The new book title is: "<<book.getBookTitle()<<endl;
    return book;
}

Я попытался использовать заголовок const_cast <& string> (я прочитал его в стеке), но ошибка не исчезла. Я получаю сообщение об ошибке: ошибка C2662: «Book :: setBookTitle»: невозможно преобразовать этот «указатель» из «const Book» в «Book &». С помощью @ user3365922 я удалил модификатор const из функции определение, и я не получаю больше ошибок. Однако повлияет ли это на мою передачу по ссылке?

...