我目前正在开发一个 C++ 程序,该程序涉及两个类:Book 和 Library。 Book 类有几个私有成员变量,我试图从库类访问这些变量。为了实现这一目标,我尝试使用友元函数。这是我正在使用的代码:
class Book{
string name;
string author;
string pages;
string edition;
string rating;
string price;
public:
void collection(void){
// Code to collect book info...
}
friend void library::search(string search);
};
class library{
public:
vector<Book> Books;
void search(string search){
for(int i=0;i<Books.size();i++){
if(Books[i].name==search){
cout<<"Book found"<<endl;
}else{
cout<<"Book not found"<<endl;
}
}
}
};
int main(){
library lab;
lab.addbook();
lab.addbook();
lab.addbook();
lab.info();
lab.search("GTHs");
return 0;
}
当我尝试编译此代码时,出现以下错误:
./main.cpp:137:17: error: use of undeclared identifier 'library'
friend void library::search(string search);
^
./main.cpp:152:25: error: 'name' is a private member of 'Book'
if(Books[i].name==search){
^
./main.cpp:112:12: note: implicitly declared private here
string name;
我知道
name
变量在 Book
类中是私有的,这就是为什么我尝试使用友元函数来访问它。但我不确定为什么会收到关于 library
未声明的错误,而且我不知道如何修复这些错误。
我的目标是让程序询问图书信息,然后给我所需的结果。谁能帮助我了解我做错了什么以及如何解决它?
所以请帮我解决这个错误。
不要添加 Friend 函数,而是将库添加为友元类。
class Book{
string name;
string author;
string pages;
string edition;
string rating;
string price;
public:
void collection(void){
// Code to collect book info...
}
friend class library;
};