オンラインで簡単に解決策を見つけることができませんでした...
私は次のようなものを持っています。
class Color {
public:
Color(std::string n) : name(n) {}
typedef std::tr1::shared_ptr<Color> Ptr;
std::string name;
};
その間、他の場所で...
void Function()
{
std::vector<Color::Ptr> myVector;
Color::Ptr p1 = Color::Ptr(new Color("BLUE") );
Color::Ptr p2 = Color::Ptr(new Color("BLUE") );
// Note: p2 not added.
myVector.push_back( p1 );
// This is where my predicament comes in..
std::find( myVector.begin(), myVector.end(), p2 );
}
std::find が実際に smart_pointers を参照し、メモリ アドレスではなくオブジェクト文字列を比較するようにするには、どうすればよいでしょうか? 私の最初のアプローチは、カスタム std::equal 関数を作成することでしたが、テンプレートを独自のテンプレート タイプとして受け入れません。