【问题标题】: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;

标签: c++ function pointers


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多