2016-05-03 4 views
-1

Я пытаюсь инициализировать этот массив вложенной структуры, и мой компилятор продолжает говорить мне, что у меня слишком много значений инициализации. есть ли другой способ, я могу обойти это? или может кто-то сказать мне, что я делаю неправильно.инициализация массива вложенной структуры

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

const int NUM_BOOKS = 3; 

struct BookInfo 
{ 
    string title; 
    double price; 
}; 

struct Author 
{ 
    string name; 
    BookInfo books[NUM_BOOKS]; 
}; 

//Prototype 
void showInfo(Author a[], int); 


int main() 
{ 
    Author a[] = 
    { 
    { "NONE", { "NONE", 0 }, { "NONE", 0 }, { "NONE", 0 } }, 
    { "NONE", { "NONE", 0 }, { "NONE", 0 }, { "NONE", 0 } }, 

    { "NONE", { "NONE", 0 }, { "NONE", 0 }, { "NONE", 0 } } 
}; 

cout << fixed << showpoint << setprecision(2); 
showInfo(a, NUM_BOOKS); 

return 0; 
} 

//This fucnction displays the array 
void showInfo(Author a[], int size) 
{ 
    for (int i = 0; i< size; i++) 
{ 
    cout << "The author: " << a[i].name << endl; 
    for (int j = 0; j < size; j++) 
    { 
     cout << "\t The title: " << a[i].books[j].title << ", "; 
     cout << "\t The price: " << a[i].books[j].price << endl; 
    } 

} 

cout << endl; 

} 

ответ

4

Массив также объект, так что вы должны использовать {} граничить его:

Author a[] = 
{ 
{ "NONE", {{ "NONE", 0 }, { "NONE", 0 }, { "NONE", 0 }} }, 
{ "NONE", {{ "NONE", 0 }, { "NONE", 0 }, { "NONE", 0 }} }, 
{ "NONE", {{ "NONE", 0 }, { "NONE", 0 }, { "NONE", 0 }} } 
}; 
Смежные вопросы