Как передать функцию-член в качестве указателя на функцию?

Я хочу добавить функцию регистрации в рабочий класс, как передать функцию-член в качестве указателя на функцию? использовать mem_fun?

Вот пример кода:

class Work{
public:
    void (*logger) (const string &s);
    void do_sth(){if (logger) logger("on log")};
};

classs P{
public:
    void log(const string &s)(cout << s);
};

int main(){
    Work w;
    P p;
    w.logger = &p.log;
    w.do_sth();
}

редактировать:

Я не хочу использовать void (P :: * xxx) (), потому что он придерживается класса P ...

Я знаю C ++ hide sth, настоящая функция журнала: void log (P & p, const string & s),

и настоящий проект такой:

Я создаю CDialog, и есть функция журнала, он копирует строку журнала в CEdit.

Так что мне нужно передать эту функцию журнала в класс Worker, этот класс выполняет некоторую работу последовательного порта,

Мне нужно войти и показать данные, отправленные и полученные ...

Ответы на вопрос(3)

Ваш ответ на вопрос