如何从指向该函数的指针调用函数?
Posted
技术标签:
【中文标题】如何从指向该函数的指针调用函数?【英文标题】:How to call a function from a pointer to that function? 【发布时间】:2021-12-21 11:59:51 【问题描述】:我正在努力解决一个可能非常简单的障碍,但似乎无法理解它是如何工作的。
在我的 C++ 项目中,我想提供延迟加载的类。为此我想到了实例化一些类型的字段
std::shared_ptr<std::function<std::shared_ptr<MyClass>>> myClassLazyLoader;
在这一点上,我什至不再确定这是一种有效的方法,所以如果我完全偏离轨道,请纠正我。
我像这样实例化该字段:
myClassLazyLoader = [] return std::make_shared<MyClass>();
为了调用这个函数,我试过了
myClassLazyLoader()
之后编译器告诉我,正如预期的那样,std::shared_ptr<std_function<...
不提供调用运算符。
当然,我试过了
(*myClassLazyLoader)()
但后来它告诉我std::function<...
也没有提供对我来说没有任何意义的呼叫操作员。
我做错了什么?
非常感谢!
【问题讨论】:
你能提取并提供一个minimal reproducible example吗?此外,第一次尝试显然有缺陷,但第二次则没有,所以请包括它产生的准确和完整的错误。 您在模板定义中有错字,缺少()
- 它应该是std::function<std::shared_ptr<MyClass>()>
。
【参考方案1】:
我发布这个的那一刻我就明白了。类型应该是
std::shared_ptr<std::function<std::shared_ptr<MyClass>()>>
【讨论】:
以上是关于如何从指向该函数的指针调用函数?的主要内容,如果未能解决你的问题,请参考以下文章