我正在創建一個需要書店庫存的程序,並且每個單獨的項目(如ISBN和作者)都位於名爲Books的結構中。由於這個清單中會有多本書,我想創建一個Books結構體的數組。由於外部需求超出了我的控制範圍,結構定義必須位於我的類所在的頭文件中,並且結構數組必須在main()中聲明。如何在結構定義位於頭文件中時在main()中創建結構數組?
這裏是在頭文件functions.h結構定義:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include <iostream>
#include <string>
using namespace std;
struct Books
{
int ISBN;
string Author;
string Publisher;
int Quantity;
double Price;
};
現在我嘗試創建結構的陣列背在main()。需要注意的是它可以讓我創建一個從結構書籍的變量,而不是一個數組:
#include <iostream>
#include <string>
#include <fstream>
#include "functions.h"
using namespace std;
int main()
{
int MAX_SIZE = 100, size, choice;
functions bookstore;
Books novels;
Books booklist[MAX_SIZE];
}
當我這樣做,我得到以下編譯器錯誤
bookstore.cpp:11: 16:錯誤:非POD元素的可變長度數組 type'Books' Books booklist [MAX_SIZE];
爲什麼在嘗試從外部結構聲明一個結構數組而不是來自相同外部結構的變量時會出現這樣的錯誤?
如果你得到一個關於非POD元素類型的錯誤,您正在使用C++,不C. – 2015-04-01 04:35:13
我認爲,在C++中,不能將variable_name作爲VLA的數組大小。它必須是一個常量'int max = 100; int a [max];'不允許,而'#define max 100 int a [max];'應該很好 – Gopi 2015-04-01 04:38:41