【发布时间】:2015-03-02 11:46:03
【问题描述】:
我想将不带参数的 void 函数或带参数的 void 函数作为参数传递给构造函数。像这样:
DailyActivity activity1(&function1)
或
DailyActivity activity2(&function2(uint_t 1))
传递的函数应该在调用DailyActivity::run()时触发。
DailyActivity 的头部是这样的:
class DailyActivity {
typedef void (*function_type)();
public:
DailyActivity(void (*f)());
virtual void run();
private:
function_type m_function;
};
构造函数和 run() 函数如下所示:
DailyActivity::DailyActivity(void (*f)()) : m_function((*f)) {
}
DailyActivity::run() {
m_function();
}
但我没有设法 (1) 以正确的方式定义 typedef 以使两个不同的函数被接受,以及 (2) 成功传递 function2 的参数。
【问题讨论】:
-
您说的是两种完全不同的函数类型。单个
typedef将无法同时容纳它们。您将不得不使用可变参数或模板来完成您的要求。
标签: c++