Я студент первого курса и только начал изучать 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 из функции определение, и я не получаю больше ошибок. Однако повлияет ли это на мою передачу по ссылке?