Здравствуйте, 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);
}