如何从指向该函数的指针调用函数?

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&lt;std_function&lt;... 不提供调用运算符。

当然,我试过了

(*myClassLazyLoader)()

但后来它告诉我std::function&lt;... 也没有提供对我来说没有任何意义的呼叫操作员。

我做错了什么?

非常感谢!

【问题讨论】:

你能提取并提供一个minimal reproducible example吗?此外,第一次尝试显然有缺陷,但第二次则没有,所以请包括它产生的准确和完整的错误。 您在模板定义中有错字,缺少() - 它应该是std::function&lt;std::shared_ptr&lt;MyClass&gt;()&gt; 【参考方案1】:

我发布这个的那一刻我就明白了。类型应该是

std::shared_ptr<std::function<std::shared_ptr<MyClass>()>>

【讨论】:

以上是关于如何从指向该函数的指针调用函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从指向基类类型的指针调用派生类函数(C++)

如何从另一个成员函数调用成员函数指针?

派生类指针如何调用基类函数

从指向对象的指针调用成员函数指针时调用错误的函数

函数指针

如何调用指向函数指针的指针?