Вход на сайт
[C++] Иерархия функторов
358 просмотров
Перейти к просмотру всей ветки
в ответ Simple 20.11.06 22:48, Последний раз изменено 20.11.06 23:50 (voxel3d)
Во-первых, не вызовется, потому, что не скомпилируется. Если for_each сделать вида:
for_each<vector<int>::iterator, BaseFunctor&>
то передать туда как написали выше:
DerivedFunctor theFunctor;
будет нельзя. Если попытаться сделать нечто типа этого:
BaseFunctor bf1;
DerivedFunctor df;
BaseFunctor& bf2 = df;
то попытка вызвать:
for_each<vector<int>::iterator, BaseFunctor&>(vec.begin(), vec.end(), bf2);
будет тоже неудачной. Во-вторых, если бы это работало, тебе, вроде, совсем другое надо - для каждого элемeнта коллекции вызвать нужную функцию? Если да, то Мурр сказал в начале ответ - в коллекцию загоняем ссылки на базовый виртуальный класс, а функтор всего лишь дёргает виртуальную функцию из переданного ему элемента коллекции.
Dropbox - средство синхронизации и бэкапа файлов.