【发布时间】:2017-06-11 18:32:53
【问题描述】:
在这里不知所措希望有人可以帮助..
我有以下类结构。
一个基类 Room 有两个子类 Kitchen 和 livingRoom。
我的基类中有一个向量
Room::Room()
{
up = nullptr;
down = nullptr;
left = nullptr;
right = nullptr;
pocket = new vector<string>;
}
定义为:
void Room::addPocket(string item)
{
char emptyPocket;
if (pocket->size()==1)
{
emptyPocket = 'N';
}
if(pocket->size()<1)
{
pocket->push_back(item);
cout << "Item added to pocket" << endl;
}
else
{
cout <<"Your pocket is full" << endl;
cout <<"Would you like to empty your pocket? 'Y' or 'N'" << endl;
cin >> emptyPocket;
if(emptyPocket == 'Y' || emptyPocket == 'y')
{
pocket->clear();
cout <<"You have emptied your pocket." << endl;
}
}
}
而我的程序功能如下。我有另一个班级Game,发生以下情况。我进入child 类Kitchen 并添加到向量中。回到Game 班级。我进入livingRoom 类,当我访问向量时,它是空的吗?我在这里错过了什么?
【问题讨论】:
-
为什么:
pocket = new vector<string>;?? -
请提供一个minimal reproducible example 来重现您的问题。
-
扩展上面的评论,你几乎不想动态分配
std::vector。动态分配的向量将部分内存管理责任重新推给了程序员,并且首先使使用vector的点失去了大约一半。 -
"pocket = 新向量
;" - 为什么?为什么不只是一个普通的成员 vector??