Вызов функции класса по ссылке
От: PavelCH  
Дата: 24.11.17 08:19
Оценка:
Добрый день!

Чем опасен такой код:

struct ca
{
    int a, b;
    ca() : a(0), b(0)
    {
    }
    void func()
    {
        a++;
    }
    typedef void(ca::*proc)();
};
struct cb : ca
{
    int c;
    cb() : c(0)
    {
    }
    void f2()
    {
        b++; c++;
    }
};
static struct routine
{
    const char*    name;
    ca::proc        proc;
} pdata[] = {
    {"f2", (ca::proc)&cb::f2}, // Тут опасный код
    {"func", &ca::func},
};
cb t1;
ca* p = &t1;
(p->*pdata[0].proc)(); // Есть ли какие-то подводные камни в таком вызове?
Нехай щастить
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.