c++ - Problem populating dynamically created array -


in code below, trying use for loop initialise member name of 5 objects of class book using names taken string array array (numbers in case testing purposes).

#include <iostream> #include <string> using namespace std;  class book { private:     string name; public:     book();     book(string&); };  book :: book() {}  book :: book(string& temp) {     name = temp; }  int main() {     string array[] = {"1", "2", "3", "4", "5"};     book *booklist = new book[5];     (int count = 0; count < 5; count ++)     {         booklist[count] = new book(array[count]);     }     return 0; } 

however, whenever try compile code, following error:

main.cpp: in function ‘int main()’: main.cpp:28: error: no match ‘operator=’ in ‘*(booklist + ((unsigned int)(((unsigned int)count) * 4u))) = (operator new(4u), (<statement>, ((book*)<anonymous>)))’ main.cpp:6: note: candidates are: book& book::operator=(const book&) 

my intention create array of objects using private member values known once loop collects relevant data. i'm following advice offered in answer #2 question asked here previously.

book *booklist = new book[5];  

booklist array of 5 book objects.

booklist[count] = new book(array[count]);  

you trying use booklist if array of 5 pointers book objects.

booklist[count] not pointer countth book, is countth book.

have considered using 1 of standard library containers, std::vector?

std::vector<book> booklist(5); 

or, if don't want insert books until know are, can create initial size of 0 (by removing (5) initializer) , push_back or insert books need to.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -