【发布时间】:2020-07-15 03:01:47
【问题描述】:
项目有一些回调函数:
using fn = std::function<void()>;
回调函数是类X的构造函数的参数:
class X(fn).
X x([](){})
X.fn()
我想引入另一种回调函数来表示id,所以我需要另一种:
using xfn = std::function<void(int)>;
有没有一种可能的方法来更改参数,使其可以支持两种类型的功能。
该项目已经包含许多具有第一类功能的代码。他们用X.fn() 调用。我正在尝试让 X 类支持X.fn(100)。因此人们可以同时调用X.fn() 和X.fn(100),使用相同的名称fn。 (我不希望它成为具有不同名称的新成员),就像具有默认值的函数一样。 fn() = fn(int val=100)
我要介绍:
X x([](int x){})
X.fn(100)
是否可以将类构造函数更改为更通用的原型函数,例如
class X(genereal fn)
这样如果 X 类可以同时接收[](){} 和[](int){}。
【问题讨论】:
-
只是超载
X::fn?还是将X设为模板类型?这里的目标并不明确。
标签: c++ prototype std-function