class Test;
template<class T> class Evt
{
public:
void operator()(T * t)
{
}
};
class Test
{
public:
Evt<Test *> memberA;
Evt<Test *> memberB;
Evt<Test *> memberC;
};
template<typename M> void Propagate(Test * r, M m)
{
r->*m(r); //term does not evaluate to a function taking 1 arguments
}
int main()
{
Test t;
Propagate(&t, &Test::memberA);
Propagate(&t, &Test::memberB);
Propagate(&t, &Test::memberC);
}
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: Указатель на поле как параметр шаблонной функции
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Но, заметь, у тебя параметр у operator() это Test**, то есть указатель на указатель, видимо это ошибка.
да, есть опечатка мелкая, но всё равно не компилится ни так ни сяк
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[3]: Указатель на поле как параметр шаблонной функции
bnk>template<typename M> void Propagate(Test * r, M m) bnk>{ bnk> (r->*m)(r); bnk>}
пофиг на звездочки, а вот со скобочками компилится! :)
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.