我想保存一个带有状态的泛型可调用,以备以后使用。请参阅下面的示例代码。我可能可以使用std::function
或std::bind
来实现这一点,但我不知道什么是最好的。还请注意,在下面示例的main()
中,capuredInt
必须保存在可调用的状态。
有哪些可能性:
makeCallable(有趣,args…){ ... }
CallableType
template <typename RetT>
class Service
{
public:
template <typename Fn, typename... Args>
Service(Fn&& fun, Args&&... args)
{
m_callable = makeCallable(fun, args...);
}
Run()
{
m_callable();
}
CallableType<RetT> m_callable;
};
// Template deduction guides (C++17)
template <typename Fn, typename... Args>
Service(Fn&& fun, Args&&... args) -> Service<std::invoke_result_t<std::decay_t<Fn>, std::decay_t<Args>...>>;
int main()
{
Service* s = nullptr;
{
int capturedInt = 5;
s = new Service([capturedInt]() { std::cout << capturedInt << std::endl; } );
}
s->Run();
}
给定设置,m_callable
的唯一选项将是std::function
。由于仿函数的类型是构造函数本身的参数,您必须键入-擦除仿函数以保存它以备将来使用-并且std::function
只是一种机制。
因此,m_callable
将是:
std::function<retT ()> m_callable;
你会把它设置成这样:
m_callable = [=]() { return fun(args...); }
我还将使用std::function
,但将其作为类的接口,如下所示:
template <typename RetT>
class Service
{
public:
Service(std::function<RetT()> fun)
{
m_callable = std::move(fun);
}
Run()
{
m_callable();
}
private:
std::function<RetT()> m_callable;
};
然后,您明确了为类存储可调用项的选项。然后,用户可以决定如何将其参数绑定到可调用对象本身,使用std::函数可以灵活地进行绑定。
s = new Service([capturedInt]() { std::cout << capturedInt << std::endl; } );
s->Run();
或
struct Foo
{
void MyPrint(int capturedInt) { std::cout << capturedInt << std::endl; }
};
Foo foo;
int capturedInt = 5;
s = new Service(std::bind(&Foo::MyPrint, &foo, capturedInt);
s->Run();
...那么你就不用担心上课造成的生活时间问题了。
问题内容: 我实质上是试图浏览html文件的文件夹。我想将它们嵌入到二进制文件中,并能够根据请求解析它们以用于模板执行目的。(如果我的措词不正确,请原谅)。 任何想法,技巧,窍门或实现此目的的更好方法将不胜感激。 问题答案: 我使用大多数Go Web应用程序执行此操作。我使用go-bindata从要嵌入的所有文件中自动生成Go源代码,然后将其编译为二进制文件。所有这些都是在构建过程中自动完成的。
给定此方法: 忽略变量名,该方法所做的是将加密代码的数据写入名为EncryptedMessage的项目文件夹内生成的txt文件中。txt。 我需要的是一种方法来保存txt文件,而不是在项目文件夹中,保存在用户在运行期间指定的位置(打开另存为对话框)。我认为这可以由JFilechooser完成,但我无法让它工作。
问题内容: 我正在将DHTMLX网格导出到csv,并且已经能够成功创建.CSV文件。我遇到的问题是它没有提示用户保存/打开文件。我正在使用来自javascript的$ .post调用将CSV字符串发送到PHP,然后将该字符串写入csv。由于某种原因,它没有为用户创建提示,但它已成功写入文件并保存在服务器上。下面是相关代码: JS: PHP(export.php): 这段代码可以完全按照我的需要导出
我想创建一个和稍后在其上的推送元素,如: 推荐的方法是什么? 谢谢!
以上内容将注销,此: 我只是想知道我是否可以替换mysite。本地主机。具有文件夹路径的com。我甚至尝试用文件夹的完整路径替换URL,但是只能在上工作。是否有将文件保存到文件夹的功能?
我有一个powershell脚本,我用这种方式保存日志 在Python中如何使用它?