LINUX.ORG.RU

С++, преобразование типов


0

0

Есть прототип функции _Func и есть метод в классе, подходящий под этот прототип. Объявляю переменную этого прототипа, и при присваивании получаю ошибку.

#include "glib/gprintf.h"

class Class
{
    public:
        Class() {};
        void Func(gchar *O)
        {
            g_printf("%s", O);
        }
};

typedef void (*_Func)(gchar *);

int main()
{
    Class C;
    _Func F;

    F = C.Func;  <------ тут возникает ошибка (1)
    F("Print me");

    return 0;
}

(1): argument of type `void (Class::)(gchar*)' does not match `void (*)(gchar*)'

Как осуществить желаемое?

★★★★★

google: C++ pointer to member function

dilmah ★★★★★
()

(1): argument of type `void (Class::)(gchar*)' does not match `void (*)(gchar*)'

указатель на функцию и указатель на функцию-член класса в C++ - это две большие разницы

jtootf ★★★★★
()

компилятор же написал в чем ошибка

а вообще почитай про std::mem_fun, boost::function, boost::bind

acefsm
()

Вроде разобрался, спасибо.

jcd ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.