Я получаю эту ошибку в своей реализации:
структура bookdatabase::Bookdatabase::Book
класс "bookdatabase::BookDatabase::Book" недоступен
Ни одно из следующих решений не решило мою проблему:
- std::basic_ostream недоступен в C++
- не удается получить доступ к закрытым членам в ostream друга
- Моя функция друга ostream и istream не может получить доступ члены закрытого класса
- член класса недоступен
- Недоступные участники?
Вот изображение того, с чем у Visual Studio возникли проблемы в файле .cpp.
Вот изображение объявления в заголовочном файле.
База данных.h
#include <string>
#include <vector>
#ifndef BOOKDATABASE_H
#define BOOKDATABASE_H
namespace bookdatabase {
class BookDatabase {
private:
struct Book {
private:
std::string authorFirstName, authorLastName, authorFullName, bookTitle, pubDate;
public:
Book(const std::string &authFirst, const std::string &authLast, const std::string &title, const std::string &date);
std::string getAuthor() const;
std::string getBookTitle() const;
std::string getPubDate() const;
bool operator < (const Book &rhs) const;
friend std::ostream& operator << (std::ostream& out, const bookdatabase::BookDatabase::Book& book);
};
void sortBooks();
std::vector<Book>::iterator search(const std::string &title);
public:
BookDatabase();
void printBookList();
std::vector<Book> getDatabase() const;
void removeBook(const std::string &title);
void addBook(const std::string &authFirst, const std::string &authLast, const std::string &title, const std::string &date);
private:
std::vector<Book> database;
};
}
#endif // BOOKDATABASE_H
База данных.cpp
std::ostream & bookdatabase::operator<<(std::ostream & out, const bookdatabase::BookDatabase::Book & book) {
out << authorFullName << ". " << bookTitle << ". " << pubDate;
return out;
}
У меня возникла эта проблема, потому что класс Book
является вложенным классом?
Book
является вложенным классом? Нет, у вас возникла эта проблема, потому что это вложенный классprivate
. - person user0042   schedule 03.12.2017