2014-09-03 98 views
0

当试图编译这个方法时,我从gcc中得到了很多错误。 zones_是std ::向量const指针const对象不能编译

std::map<int,std::vector<Zone const * const>> 

这是MyClass的私人成员。

//get unique zones 
std::vector<Zone const* const> MyClass::getZones() const { 
    std::vector<Zone const * const> zones; //why can I not do this??? 
    std::map<Zone const * const,int> zone_set; 
    for(auto & pair : zones_) { 
     for(Zone const * const z : pair.second) { 
      if(zone_set.count(z) == 0) { 
      zone_set[z] = 1; 
      zones.push_back(z); //cannot do this 
      } 
     } 
    } 
return zones; 
} 

我可以有一个const指针的向量指向常量对象吗?

+0

你可以发布错误吗?我很好奇他们 – 2014-09-03 13:56:33

回答

3

否。通常,矢量的元素不能为const,因为当矢量数组需要重新分配时,它们必须移动。你必须存储Zone const *;或者可能使用不同的容器类型(listdeque或可能set),如果你确实需要不变的元素。