gpt4 book ai didi

c++在 map 中保存类模板化函数指针

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:45 27 4
gpt4 key购买 nike

我有一个小问题,我无法解决。我有一个看起来像这样的函数:

template <typename T>
std::unique_ptr<Environment>& CreateEnvironment(sf::Vector2f& _position, bool _addToStatic = false);

这是我的函数指针typedef

typedef std::unique_ptr<Environment>& (WorldEditor::*CreateEnvironmentPtr)(sf::Vector2f&, bool);
std::map<std::string,CreateEnvironmentPtr> listEnv;

我只是想简单地做到这一点:

listEnv["test"] = &CreateEnvironment<Coin>(sf::Vector2f(200,200), false);

我收到以下错误:

error C2440: '=' : cannot convert from 'std::unique_ptr<_Ty> *' to
'std::unique_ptr<_Ty> &(__thiscall WorldEditor::* )(sf::Vector2f
&,bool)'

我明白错误在说什么,但我不知道如何解决。另外,当我指向函数地址时,为什么它甚至关心返回类型?

最好的问候尼洛

最佳答案

使用 std::function

通常可以更好地解决诸如此类的问题
std::map<std::string, std::function<void()> listEnv;

listEnv.emplace("test", [] {
CreateEnvironment<Coin>(sf::Vector2f(200,200), false);
});

调用:

listEnv.at("test")->second();

关于c++在 map 中保存类模板化函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30357857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com