【发布时间】:2011-10-13 20:54:24
【问题描述】:
嘿,我正在尝试制作一个 Button 模板类,它是由 构造的.
但是按钮通常返回 void 并且不带参数(您按下按钮并发生某些事情:它们不带任何参数,它们被按下然后只是做某事。)所以 我将如何生成类成员函数,因为显然我不能将 void 作为参数类型?
如果有用的话,这里是来源:
template<typename Return = void, typename Arg1 = void, typename Arg2 = void>
class Button
{
private:
boost::function<Return (Arg1, Arg2)> Function;
//Return (*Function)(Arg1, Arg2); // this didn't work so i tried boost::function
public:
void Activate(Arg1, Arg2){ Function(Arg1, Arg2) ;};
void SetFunction(Return (*Function)(Arg1, Arg2)){
this->Function= Function;};
//constructors
Button(){ Function= 0;};
Button( Return (*Function)(Arg1, Arg2)){
this->Function = &Function; };
};
【问题讨论】:
-
您想如何使用您的模板?按钮经常返回 void 并且不带参数是什么意思?你指的是什么按钮?
-
@Jaime:您按下按钮并发生某些事情:它们不接受任何参数,它们被按下然后只是做某事。
-
按钮是生成事件(即点击)的图形元素,你“挂钩”函数来响应这些事件,这就是按钮如何“做”它的事情.. ui 框架定义了你的签名应该实现以响应这些事件(参数类型和返回类型)所以你想如何使用你的模板?这样做的目的是什么,也许我们可以提出一些关于如何去做的建议
标签: c++ class templates membership void