【发布时间】:2010-08-04 02:33:23
【问题描述】:
我想为工人类添加一个记录器功能, 如何将成员函数作为函数指针传递? 使用 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 类,这个类做一些串口工作,
我需要记录并显示发送和接收的数据...
【问题讨论】:
-
我认为这是一种很常见的设计模式。
标签: c++