Frage

Ich kämpfe, um herauszufinden, warum kann ich nicht bekommen verwandeln mit einer Template-Klasse zu arbeiten.

Hier ist eine vereinfachte Version der Template-Klasse:

template<typename T>
class base
{
public :
  base() : all_() {}
  ~base() {}
public:
  bool add(T t)
  {
    typename vector<T>::iterator itr 
      = lower_bound(all_.begin(), all_.end(), t);
    if ( itr == all_.end() || *itr != t )
      {
        all_.push_back(t);
        cout << "ok" << endl;
        return true;
      }
    cout << "failed" << endl;
    return false;
  }
  static bool addTo(base<T> *c, T t)
  {
    return c->add(t);
  }
private :
  vector<T> all_;
};

Und das ist, wo ich versuche, alle Bool Ausgabe aus der Add-Elementfunktion zu erfassen zu verwenden umwandeln:

main()
{
  base<int> test;
  vector<bool> results;
  vector<int> toAdd;
  toAdd.push_back(10);
  toAdd.push_back(11);
  toAdd.push_back(10);
  transform( toAdd.begin(), toAdd.end(),
             back_inserter(results),
             bind1st( (bool(*)(base<int>*,int))base<int>::addTo, &test ) );
}

Das Ziel ist es, jedes Mitglied des TOADD Behälters einzufügen Base entweder :: hinzufügen oder Base :: addTo, und erfassen die bool Ergebnisse in den Vektor Ergebnisse

War es hilfreich?
scroll top