Если вы хотите использовать std::set
вы должны реализовать operator <
...
#include <set>
class CallerId{
private:
std::string name;
int* number;
public:
CallerId(std::string na, int* nu=nullptr) : name(na), number(nu) {}
bool operator <(const CallerId &src) const { return name < src.name; }
};
std::set<CallerId> callIdSet;
callIdSet.insert(CallerId("a"));
callIdSet.insert(CallerId("b"));
... другой способ заключается в использовании std::map
где CallerId::name
является ключом ...
#include <map>
class CallerId{
private:
std::string name;
int* number;
public:
CallerId(std::string na, int* nu=nullptr) : name(na), number(nu) {}
const std::string& Name() const { return name; }
};
CallerId ida("a");
CallerId idb("b");
std::map<std::string,CallerId> callIdMap;
callIdMap.emplace(ida.Name(), ida);
callIdMap.emplace(idb.Name(), idb);
Да , возможно. – LogicStuff
напишите 'operator <()' then use 'std :: set' – JSF
Да, пожалуйста, уточните, что вы пробовали. Это прямо (используйте std :: set) и реализуйте