2015-04-12 3 views
0

Я создал класс под названием «Книга», и у него может быть много книг. Но я хочу создать полку класса, которая может содержать только 10 книг, если она больше 10 десяти, она должна печатать сообщение об ошибке! Но я не могу придумать способ сделать классную полку. До сих пор я это сделал:Использование объектов класса в другом классе?

#include <iostream> 
#include <string> 
using namespace std; 

class Book{ 
private: 
    string bookName; 
    int pNum; 

public: 
    Book(); 
    Book(string tempName, int tNum){ 
     setName(tempName); 
     setPageNum(tNum); 
    } 

    void setName(string bName){ 
    bookName = bName; 
    } 



    void setPageNum(int tempNum){ 
     pNum = tempNum; 
    } 

    string getName(){ 
    return bookName; 

     } 
    int getPageNum(){ 
     return pNum; 

     } 
}; 

class Shelf{ 
    public: 
    Book nBook[10]; 
    void addbook(); 
void Book::addbook(Book nBook[10]) 
{ 
    for(int i = 0; i<10; i++) 
     nBook[i] = nBook[i].setName(string bName) 

} 


}; 
int main(){ 

    Book math = Book("math", 500); 
    Book abcd = Book("abcd", 501); 


    cout << English.getName() <<" "<<English.getPageNum()<<endl; 
    cout << German.getName() <<" "<<German.getPageNum()<<endl; 


} 
+1

Возможно 'станд :: VECTOR'. – chris

+0

Как использовать std-векторы? У меня совершенно нет идеи использовать векторы? –

+0

Я рекомендую прочитать некоторые вводные материалы для чтения. Они являются одной из самых практичных вещей в стандартной библиотеке IMO. – chris

ответ

2

Вы можете использовать стандартный векторный класс для хранения объектов книги на полке. В приведенном ниже примере, книга объект будет скопирован при добавлении к Shelf

#include <vector> 
using namespace std; 
class Shelf{ 
public: 
    vector<Book> books; 

    bool addbook(Book book) 
    { 
    if(books.size() > 10) 
     { 
     return false; 
     } 
    else 
     { 
     books.push_back(book); 
     return true; 
     } 
    } 
}; 
+0

спасибо, много векторов стефан, делают жизнь проще. ура –

1

Существует много способов реализовать это. Обратите внимание на конструктор по умолчанию класса Book. Дайте знать, если у вас появятся вопросы.

#include <iostream> 
#include <string> 
using namespace std; 

class Book{ 
private: 
    string bookName; 
    int pNum; 

public: 
    Book(){ 
    } 
    Book(string tempName, int tNum){ 
     setName(tempName); 
     setPageNum(tNum); 
    } 

    void setName(string bName){ 
    bookName = bName; 
    } 

    void setPageNum(int tempNum){ 
     pNum = tempNum; 
    } 

    string getName(){ 
    return bookName; 

    } 
    int getPageNum(){ 
     return pNum; 

    } 
}; 

class Shelf{ 
    public: 
    Book nBook[10]; 
    int numberOfBooks; 
    void addbook(Book); 

    Shelf() 
    { 
     numberOfBooks = 0; 
    } 

    bool addBook(Book newBook) 
    { 
     if (numberOfBooks == 10) 
     { 
      return false; 
     } 
     else 
     { 
      nBook[numberOfBooks] = newBook; 
      numberOfBooks++; 
      return true; 
     } 
    } 


}; 
int main(){ 

    Book English = Book("math", 500); 
    Book German = Book("abcd", 501); 


    Shelf bookShelf = Shelf(); 

    bookShelf.addBook(English); 

} 
+0

Что такое 'copyBook'? Просто используйте конструктор копирования или оператор присваивания, который создается для вас автоматически. –

+0

Три не нужно использовать 'новый' в этом коде, который пропускает память, поскольку у вас нет удаления. –

+0

'Book nBook [10];' ... 'nBook [numberOfBooks - 1] = newBook;' –

Смежные вопросы