我正在创建一个需要书店库存的程序,并且每个单独的项目(如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