该项目具有一些回调函数:
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)
。因此,人们都可以使用相同的名字fn来呼叫X.fn()
和X.fn(100)
。 (我不希望它成为具有不同名称的新成员),就像具有默认值的函数一样。 fn() = fn(int val=100)
我要介绍:
X x([](int x){})
X.fn(100)
是否可以将类构造函数更改为更通用的原型函数,如
class X(genereal fn)
这样,如果X类可以同时接收[](){}
和[](int){}
。
答案 0 :(得分:1)
您可以使用模板和std::function
使其接受您喜欢的任何类型,如下所示
template<typename ...T>
struct X{
X(std::function<void(T...)>&& fn_):fn{std::move(fn_)}{}
std::function<void(T...)> fn;
};
int main()
{
X<int> x1{[](int x){std::cout << "\n" << x;}};
x1.fn(3);
X<> x2{[]( ){std::cout << "\nnon";}};
x2.fn();
}
答案 1 :(得分:0)
假设您要使用相同的类并允许存储和访问这两个函数,则可以尝试以下方法:
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/get_image')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')