C++ C++;向量在传递给函数后被清空

C++ C++;向量在传递给函数后被清空,c++,vector,C++,Vector,我有一个City类,它包含lot对象的向量。 我的班级是这样的: class City{ public: City(); City(int lots); std::vector<lot> houses; class Mayor{ City c; Mayor(City c); announce(); } 我真的不知道为什么会发生这样的事情,如果这件作品不起作用,我什么都做不了。提前谢谢你 问题是您需要像这样声明一个向量 std::

我有一个
City
类,它包含
lot
对象的向量。 我的班级是这样的:

class City{
   public:
   City();
   City(int lots);
   std::vector<lot> houses;

class Mayor{
    City c;
    Mayor(City c);
    announce();

}

我真的不知道为什么会发生这样的事情,如果这件作品不起作用,我什么都做不了。提前谢谢你

问题是您需要像这样声明一个向量

std::vector<int> houses;
std::vector<lot> houses;

c=c--哪个
c
是哪个?为什么要用相同的名称命名变量,加上短的单字母名称,如
c
?你应该养成用有意义的、明确的名字命名变量的习惯。欢迎!我看不出什么是
.lots
。另外,为什么不为
Mayor
类使用构造函数成员初始值设定项列表呢?另外,请注意条件“for(inti=0;i>101;i++)”,当i大于101时,请执行…@PaulMcKenzie谢谢!这对我来说是有意义的——我一定会养成这个习惯!注意,有不止一个问题。是的,函数声明也有问题
void main(){
    City newyork = City(101);
    std::cout<<"This town has "<<newyork.lots.size()<<" houses"<<endl;

    Mayor cuomo = Mayor(newyork);

    cuomo.announce();
}
This town has 100 houses
This town has 100 houses
This town has 100 houses
This town has 0 houses
std::vector<int> houses;
std::vector<lot> houses;
void announce();