Re: template в С++
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 08.04.04 05:47
Оценка:
Здравствуйте, Constantin_Sh, Вы писали:

C_S>template<class CLASS>

C_S>void ForEach(CLASS *pHandler,void (CLASS::*lpfCall)(CObject *))
C_S>{
C_S> CObject **ppObj = ...указатель на массив объектов,кот. заканчивается 0
C_S> while(*ppObj) { (pHandler ->*lpfCall)(*ppObj); ppObj++; }
C_S>}
C_S>надо в вызове ForEach для каждого CObject вызывать функцию lpfCall из объекта типа CLASS. При крмпиляции ошибка — не может вывести аргумент из шаблона. Как это можно обойти?

Подробнее, так как вот такой пример прекрасно компилируеться (я про смысловую нагрузку молчу пока):
class CObject {};

template<class CLASS>
void ForEach(CLASS *pHandler,void (CLASS::*lpfCall)(CObject *))
{
    CObject **ppObj = 0;
    while(*ppObj) { (pHandler ->*lpfCall)(*ppObj); ppObj++; }
}

class My
{
public:
    void F(CObject *) {}
};

int main()
{
    My m;
    ForEach(&m, &My::F);
}
getboost.codeplex.com
citylizard.codeplex.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.