共有ポインタのセットがあります。
共有ポインタが存在するかどうかをチェックする関数を作りたいです。
それを取得するには 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 の方法を試してみましたが、私には少し複雑すぎて、やはり自分では解決できない問題がありました。
お手伝いありがとう :)