Niezgodne typy - czy to dlatego, że tablica jest już wskaźnikiem?

W poniższym kodzie tworzę obiekt w oparciu o strukturę książek, a aby go pomieścić wiele „książek”, ustawiam tablicę (obiekt, który jest zdefiniowany / zainicjowany, czyli). Jednak zawsze, gdy poszedłem sprawdzić moją wiedzę o wskaźnikach (praktyka pomaga) i próbowałem zrobić wskaźnik wskazujący na utworzony obiekt, dał mi błąd:

C: Użytkownicy Justin Program Project issuip main.cpp | 18 | error: niekompatybilne typy w przypisywaniu książek„do” książek * [4] ”| *

Czy mogę zapytać, czy to dlatego, że obiekt book_arr [] jest już uważany za wskaźnik jako tablicę? Dzięki (nowy w C ++ i po prostu chcę to sprawdzić).

#include <iostream>
#include <vector>
#include <sstream>

#define NUM 4

using namespace std;

struct books {
    float price;
    string name;
    int rating;
} book_arr[NUM];

int main()
{
    books *ptr[NUM];
    ptr = &book_arr[NUM];

    string str;

    for(int i = 0; i < NUM; i++){
        cout << "Enter book name: " << endl;
        cin >> ptr[i]->name;
        cout << "Enter book price: " << endl;
        cin >> str;
        stringstream(str) << ptr[i]->price;
        cout << "Enter book rating: " << endl;
        cin >> str;
        stringstream(str) << ptr[i]->rating;
    }

    return 0;
}

*NOWY KOD PO ODPOWIEDZI (BRAK BŁĘDÓW) *

#include <iostream>
#include <vector>
#include <sstream>

#define NUM 4

using namespace std;

/* structures */
struct books {
    float price;
    string name;
    int rating;
} book[NUM];

/* prototypes */
void printbooks(books book[NUM]);

int main()
{
    string str;

    books *ptr = book;

    for(int i = 0; i < NUM; i++){
        cout << "Enter book name: " << endl;
        cin >> ptr[i].name;
        cout << "Enter book price: " << endl;
        cin >> str;
        stringstream(str) << ptr[i].price;
        cout << "Enter book rating: " << endl;
        cin >> str;
        stringstream(str) << ptr[i].rating;
    }

    return 0;
}

void printbooks(books book[NUM]){
    for(int i = 0; i < NUM; i++){
        cout << "Title: \t" << book[i].name << endl;
        cout << "Price: \t$" << book[i].price << endl;
        cout << "Racing: \t" << book[i].rating << endl;
    }
}

questionAnswers(2)

yourAnswerToTheQuestion