vector<Book> book(100);然后提示说error C2059: syntax error : 'constant' 这是为什么啊

Book是一个图书类 构造函数是Book(){}
class Bookdatabase{ //图书操作类
private:
vector<Book> book(100); //错误的地方
int top; //图书记录指针,记录图书增加到的位置
这是为什么

class Bookdatabase{ //图书操作类
private:
vector<Book> book; //错误的地方
int top; //图书记录指针,记录图书增加到的位置
public:
Bookdatabase():book(100){}
};
像你那样写不对,对vector初始化放在类Bookdatabase的构造函数中追问

是因为vector book(100)如果没有给它赋初值的话 自己会自动的赋初值,然后私有数据中不允许赋初值,所以两者矛盾了出错 是吗
这样做,动态数组自动扩充内存的功能应该还在吧

追答

vector book(100)这么写,是因为 vector 有带参的构造函数,你试过在类里面写个int a = 5;
这样是一个道理,是通不过的。因为假如你放到类里定义的时候初始化是合理理,我这个类还没声明变量,它就会有值了,这是不对的,因为这时候没有变量,还没有给它分配空间,怎么可能初始化?我放到构造函数里,在声明这个类的变量时,它就会自动的调构造函数对这个变量进行初始化,这时候是可以的,你为你声明变量了,它申请了内在空间,这时候就可以初始化了,这时它设定Vector的大小是100,和你写里面是一个意思,只不过你的不合法。

追问

恩 我就是这个意思 感谢大师啊

温馨提示:答案为网友推荐,仅供参考
相似回答