我有一组共享指针。
我想创建一个函数来检查其中是否存在共享指针。
我认为我需要使用 set.count 来获取它。
但是我一直得到 0 ......即使共享指针存在于那里。
所以我的问题是:count 如何比较共享指针?
请记住,我是 C++ 新手,我可以提供代码,但代码很多。
编辑 2:检查建筑物并添加汽车的功能。
void Garage::addCar(Car& n, Building& m){
shared_ptr<Building> mm(new Building(m));
if (this->Buildings.count(mm) == 0){
cout << m.name << " doesn't exist in " << this->name << "." << endl;
return;
}
shared_ptr<Car> s(new Car(n));
m.addCar(s);
Cars.insert(s);
}
创建建筑物的功能
Building Garage::create Building(string name){
shared_ptr< Building> f_ptr(new Building(name));
Buildings.insert(f_ptr);
return (*f_ptr);
}
类车库
class Garage {
public:
Garage(string name);
~Garage();
void admitCar(Car& n, Building& m);
void dismissCar(Car& n, Building& m);
void employEmployee(Employee& n, Building& m);
void dismissEmployee(Employee& n, Building& m);
Building createBuilding(string name);
void deleteBuilding(Building&);
private:
int nextIndex;
string name;
set<shared_ptr<Building> > Buildings;
set<shared_ptr<Employee> > Employees;
set<shared_ptr<Car> > Car;
}
每当我想在建筑物中添加汽车时,它都会说该建筑物不存在于那个车库中...
解决方案(我自己的):
bool Garage::hasBuilding(shared_ptr<Building> f){
return (this->Buildings.count(f) != 0);
}
这是我创建的功能。有用。
我尝试了 Jonathan Wakely 和 LiKao 的方法,但它们对我来说有点太复杂了,而且我遇到了我自己无法解决的问题。
感谢您的帮助 :)